<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <updated>2025-12-05T23:10:27Z</updated>
  <generator>https://yabu.me</generator>

  <title>Nostr notes by VectorPrivacy</title>
  <author>
    <name>VectorPrivacy</name>
  </author>
  <link rel="self" type="application/atom+xml" href="https://yabu.me/npub1hrujuc08r4zcdtn0u6ts7u7apldcjqgftz0z7stmaaz9hwaf9jxs66f3yh.rss" />
  <link href="https://yabu.me/npub1hrujuc08r4zcdtn0u6ts7u7apldcjqgftz0z7stmaaz9hwaf9jxs66f3yh" />
  <id>https://yabu.me/npub1hrujuc08r4zcdtn0u6ts7u7apldcjqgftz0z7stmaaz9hwaf9jxs66f3yh</id>
  <icon>https://image.nostr.build/420fbaa6a2689dfb126f43732f9a3ddebe4e25c131b020efc73499c623af806d.png</icon>
  <logo>https://image.nostr.build/420fbaa6a2689dfb126f43732f9a3ddebe4e25c131b020efc73499c623af806d.png</logo>




  <entry>
    <id>https://yabu.me/nevent1qqsqxrm8hu3sr2jjx29azz8ec9vmc0qeljwn5ap4hcyhdgkn6rdutgczyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6wgcjqa</id>
    
      <title type="html">Vector is now listed on ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsqxrm8hu3sr2jjx29azz8ec9vmc0qeljwn5ap4hcyhdgkn6rdutgczyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6wgcjqa" />
    <content type="html">
      Vector is now listed on nprofile1qqs83nn04fezvsu89p8xg7axjwye2u67errat3dx2um725fs7qnrqlgzqtdq0!&lt;br/&gt;  &lt;img src=&#34;https://image.nostr.build/4c06e38a6425946a9b5940dc0338d4000985bda0c0c6fe73bddc61e036d18e42.jpg&#34;&gt; &lt;br/&gt;&lt;br/&gt;We are grateful and honored to finally be listed and available for the preferred and &amp;#34;go-to&amp;#34; app store for Nostr users. Thanks everyone for your patience, we know a lot of you all kept asking us &amp;#34;wen&amp;#34;. Our goal was to optimize and improve a lot of features on Android before publishing, as first impressions can be everything. Probably not as much here on Nostr, as most of us are builders, developers, and used to working with experimental technology in its early stages.&lt;br/&gt;&lt;br/&gt;Regardless, it was a seamless experience and one of the best app stores that we have used. The UX/UI is beautiful, intuitive, and just easy to understand and navigate. We are certainly sold on Zapstore.dev and will be promoting and sharing with others to check out.&lt;br/&gt;&lt;br/&gt; Check it out yourself:&lt;br/&gt;&lt;a href=&#34;https://zapstore.dev/apps/io.vectorapp&#34;&gt;https://zapstore.dev/apps/io.vectorapp&lt;/a&gt;&lt;br/&gt; &lt;img src=&#34;https://image.nostr.build/2a954159facf168855cc1eb273674750abe81688c966994e21a1594751318254.jpg&#34;&gt; &lt;br/&gt;&lt;br/&gt;Feel free to sign in to Zapstore.dev and leave a comment or review for Vector. We&amp;#39;d love to hear your honest feedback and takes. We are still in Open Beta, v0.3.3 just released yesterday, but making great strides... especially with the support from the Nostr community. 💚
    </content>
    <updated>2026-03-25T14:34:14Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsf76mctkv5slunpe4x6assx66t0g2ur8n785ddteg5keuyn3keasgzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6fh0xp6</id>
    
      <title type="html">We will find good use for that Vector Theme of the Zapstore ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsf76mctkv5slunpe4x6assx66t0g2ur8n785ddteg5keuyn3keasgzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6fh0xp6" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsfgz88g6hfths2y2xzy4mjrmq2e8cv8aapw9lv2v584a22gam5uqgnahh6m&#39;&gt;nevent1q…hh6m&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;We will find good use for that Vector Theme of the Zapstore badge. Looks great, Bee!
    </content>
    <updated>2026-03-25T13:14:17Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs93sd7x53xgernej6pdx6pgtqaej7mhxd599v3vqhcdllw3ryquhczyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6n6msyx</id>
    
      <title type="html">Ah! Thanks for the patience, we will now be reaching out to ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs93sd7x53xgernej6pdx6pgtqaej7mhxd599v3vqhcdllw3ryquhczyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6n6msyx" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsyxs7p6rv97p26nxgysqaxk0hz2nfjzqvczw8pen3yu4tc5ygyk8g7370pj&#39;&gt;nevent1q…70pj&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Ah! Thanks for the patience, we will now be reaching out to &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nprofile1qqs83nn04fezvsu89p8xg7axjwye2u67errat3dx2um725fs7qnrqlgzqtdq0&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Zapstore&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;nprofile…tdq0&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; because we finally released the latest version with some big upgrades. It is also tested on Android and quite challenging to play compared to the PC, but it does indeed work. Hope to get Vector listed soon™
    </content>
    <updated>2026-03-24T20:52:09Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsfxfkcj2w6z50l5ccxvf35aq363t7e46rf05h36xyxxx6sq0fhfnszyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6gqa0wd</id>
    
      <title type="html">#naddr1qv…w6hm</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsfxfkcj2w6z50l5ccxvf35aq363t7e46rf05h36xyxxx6sq0fhfnszyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6gqa0wd" />
    <content type="html">
      &lt;blockquote class=&#34;border-l-05rem border-l-strongpink border-solid&#34;&gt;&lt;div class=&#34;-ml-4 bg-gradient-to-r from-gray-100 dark:from-zinc-800 to-transparent mr-0 mt-0 mb-4 pl-4 pr-2 py-2&#34;&gt;quoting  &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Article&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/naddr1qvzqqqr4gupzpw8e9es7w829s6hxle5hpaea6r7m3yqsjky79aqhhm6ytwa6jtydqq2kk5j3tak5snmxfek4x32g2y6455nhvyukje2w6hm&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;naddr1qv…w6hm&lt;/a&gt;&lt;/span&gt; &lt;/div&gt; &lt;p&gt;We&amp;#39;ve just released the latest version of Vector that primarily covered security upgrades, Android optimizations (resources &#43; preserving battery life), profile URL sharing, and new chat features. So, feel free to update to the latest version and test them out yourself! If you can&amp;#39;t find any of the features you want to test or not sure where,  just post in chat and the team, developers, and community can assist you. Below is the complete list of improvements and fixes for &lt;code&gt;v0.3.3&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Website:&lt;a href=&#34;https://vectorapp.io&#34;&gt;Download Now&lt;/a&gt;
⭐&lt;a href=&#34;https://github.com/VectorPrivacy/Vector/releases/tag/v0.3.3&#34;&gt;Visit GitHub&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&#34;new-features-2&#34;&gt;&lt;strong&gt;New Features:&lt;/strong&gt;&lt;/h2&gt;

&lt;p&gt;🚫 &lt;strong&gt;User Blocking&lt;/strong&gt;: you can block users from DMs - blocked contacts are hidden from contacts, invites, and notifications&lt;/p&gt;

&lt;p&gt;👤 &lt;strong&gt;Profile Invites&lt;/strong&gt;: share your own profile online with a single tap via the new Share button&lt;/p&gt;

&lt;p&gt;🔐 &lt;strong&gt;Memory-Hardened Key Vault&lt;/strong&gt;: private keys are XOR-split into 4 shares scattered across 128 indistinguishable decoy arrays — invisible to malware &amp;amp; forensics&lt;/p&gt;

&lt;p&gt;📋 &lt;strong&gt;Unified Logging&lt;/strong&gt;: new structured logging system with UTC timestamps, error toasts, and a persistent log file for easier debugging&lt;/p&gt;

&lt;p&gt;🪂 &lt;strong&gt;Error Logging&lt;/strong&gt;: errors are now caught and written to a private crash log — with a Copy Logs button in Settings for easy bug reports&lt;/p&gt;

&lt;h2 id=&#34;improvements-2&#34;&gt;Improvements:&lt;/h2&gt;

&lt;p&gt;🔋 &lt;strong&gt;Android Battery Life&lt;/strong&gt;: background sync now connects to a single relay (with automatic failover) instead of 4-5, eliminating ~75% of radio wakeups&lt;/p&gt;

&lt;p&gt;🎮 &lt;strong&gt;Mini App Realtime Overhaul&lt;/strong&gt;: rebuilt WebXDC realtime channels with preconnect, SQLite persistence, message buffering, and bi-directional WebSocket support&lt;/p&gt;

&lt;p&gt;🚀 &lt;strong&gt;Windows Mini App Performance&lt;/strong&gt;: dramatically improved WebGL/WASM performance for Mini Apps on Windows&lt;/p&gt;

&lt;p&gt;🛡️ &lt;strong&gt;Anti-Debug Protections&lt;/strong&gt;: release builds block debugger attachment, memory inspection, and unsigned DLL injection across macOS, Linux, Android, and Windows&lt;/p&gt;

&lt;p&gt;🧹 &lt;strong&gt;Zeroize Everywhere&lt;/strong&gt;: passwords, seeds, nsec strings, and temporary key copies are wiped from memory immediately after use via volatile writes&lt;/p&gt;

&lt;p&gt;📡 &lt;strong&gt;Scoped MLS Subscriptions&lt;/strong&gt;: group message subscriptions are now filtered by your group IDs at the relay level&lt;/p&gt;

&lt;p&gt;⚡ &lt;strong&gt;Instant Background Stop&lt;/strong&gt;: background sync now uses zero-cost Notify signaling instead of polling every 5 seconds, responding instantly when you open the app&lt;/p&gt;

&lt;h2 id=&#34;fixes-2&#34;&gt;Fixes:&lt;/h2&gt;

&lt;p&gt;👻 &lt;strong&gt;Ghost Messages&lt;/strong&gt;: MLS group messages no longer visually duplicate — the relay echo is now deduplicated at the backend before reaching the UI&lt;/p&gt;

&lt;p&gt;📱 &lt;strong&gt;Android Foreground Resume&lt;/strong&gt;: opening the app after background sync no longer shows an empty UI or login screen — stale relay connections and partial state are cleaned up automatically&lt;/p&gt;

&lt;p&gt;🖼️ &lt;strong&gt;Preview Image Crash&lt;/strong&gt;: fixed crash when a link preview&amp;#39;s og:image URL fails to load&lt;/p&gt;

&lt;p&gt;🎮 &lt;strong&gt;Mini App Session Fix&lt;/strong&gt;: fixed Android Mini App failing to connect on second session open&lt;/p&gt;

&lt;p&gt;🔍 &lt;strong&gt;GIF Search Safety&lt;/strong&gt;: GIF search empty state no longer interpolates user input as HTML&lt;/p&gt;

&lt;p&gt;📎 &lt;strong&gt;Mini App Upload Spinner&lt;/strong&gt;: fixed duplicate progress spinners and spinner overlapping text in chat bubbles&lt;/p&gt;
 &lt;/blockquote&gt;
    </content>
    <updated>2026-03-24T20:33:30Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqstxc4vvd5pckqlr0h5ltwdx23sf5tu5nr5hysh6g3qsjgh4l9a3zczyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6qx0fra</id>
    
      <title type="html">How&amp;#39;s the fragging going? Oops, we mean the stress testing. ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqstxc4vvd5pckqlr0h5ltwdx23sf5tu5nr5hysh6g3qsjgh4l9a3zczyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6qx0fra" />
    <content type="html">
      How&amp;#39;s the fragging going?&lt;br/&gt;Oops, we mean the stress testing.&lt;br/&gt;&lt;br/&gt; &lt;img src=&#34;https://image.nostr.build/5e406dd0ec1f4d86ec38299a0a9bce0372e40edfac1bc800185d1f864ef651bc.jpg&#34;&gt; &lt;br/&gt;&lt;br/&gt;GitHub Repo:&lt;br/&gt;&lt;a href=&#34;https://github.com/VectorPrivacy/DOOM&#34;&gt;https://github.com/VectorPrivacy/DOOM&lt;/a&gt;&lt;blockquote class=&#34;border-l-05rem border-l-strongpink border-solid&#34;&gt;&lt;div class=&#34;-ml-4 bg-gradient-to-r from-gray-100 dark:from-zinc-800 to-transparent mr-0 mt-0 mb-4 pl-4 pr-2 py-2&#34;&gt;quoting  &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Article&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/naddr1qvzqqqr4gupzpw8e9es7w829s6hxle5hpaea6r7m3yqsjky79aqhhm6ytwa6jtydqq2ng66wwpckw4t60f49q3m3gddyknf4d4mrxhqars5&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;naddr1qv…ars5&lt;/a&gt;&lt;/span&gt; &lt;/div&gt; 
&lt;h1 id=&#34;open-source-doom-how-we-brought-real-time-multiplayer-to-a-1993-classic-no-servers-required-2&#34;&gt;Open-Source DOOM: How We Brought Real-Time Multiplayer to a 1993 Classic. No Servers Required.&lt;/h1&gt;

&lt;p&gt;A Breakthrough in Decentralized Gaming by &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub16ye7evyevwnl0fc9hujsxf9zym72e063awn0pvde0huvpyec5nyq4dg4wn&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;JSKitty&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub16ye…g4wn&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;

&lt;hr&gt;

&lt;p&gt;In May 2021, Cloudflare did something wonderful. They took DOOM -the 1993 game that defined an entire genre -compiled it to WebAssembly, wired up WebSocket multiplayer through their Durable Objects edge platform, and &lt;a href=&#34;https://blog.cloudflare.com/doom-multiplayer-workers/&#34;&gt;wrote a fantastic blog post about it&lt;/a&gt;. As Celso Martinho put it: &lt;em&gt;&amp;#34;Running Doom is effectively the new &amp;#39;Hello, World&amp;#39; in computing.&amp;#34;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;We loved it. And then we thought: &lt;em&gt;what if we could take it further?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;What if multiplayer DOOM didn&amp;#39;t need Cloudflare&amp;#39;s servers -or anyone&amp;#39;s servers? What if it didn&amp;#39;t need the internet at all? What if you could send a 4MB file to a friend in a chat message and be fragging each other within seconds, purely peer-to-peer, with the game feeling like a modern real-time shooter instead of a 1994 LAN party?&lt;/p&gt;

&lt;p&gt;That&amp;#39;s what we built. We call it &lt;strong&gt;Open-Source DOOM&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It&amp;#39;s powered by a stack of open technologies: &lt;a href=&#34;https://www.chocolate-doom.org/&#34;&gt;Chocolate Doom&lt;/a&gt; compiled to &lt;a href=&#34;https://webassembly.org/&#34;&gt;WebAssembly&lt;/a&gt; via &lt;a href=&#34;https://emscripten.org/&#34;&gt;Emscripten&lt;/a&gt;, distributed as a &lt;a href=&#34;https://webxdc.org/&#34;&gt;WebXDC&lt;/a&gt; mini-app, with peer discovery over &lt;a href=&#34;https://nostr.com/&#34;&gt;Nostr&lt;/a&gt;, end-to-end encryption via &lt;a href=&#34;https://github.com/parres-hq/mdk&#34;&gt;Marmot&lt;/a&gt; (MLS over Nostr), and real-time P2P data transport through &lt;a href=&#34;https://iroh.computer/&#34;&gt;Iroh&lt;/a&gt; (QUIC-based gossip). Every layer is open-source. Every packet is encrypted. No servers required.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://image.nostr.build/2768aba5d0e616d626f7877966feec7e7f3c5822a552e5320305c635a8c58697.jpg&#34; alt=&#34;image&#34;/&gt;&lt;/p&gt;

&lt;hr&gt;

&lt;h2 id=&#34;what-cloudflare-built-and-why-it-s-great-2&#34;&gt;What Cloudflare Built (And Why It&amp;#39;s Great)&lt;/h2&gt;

&lt;p&gt;Credit where it&amp;#39;s due. Cloudflare&amp;#39;s &lt;a href=&#34;https://github.com/cloudflare/doom-wasm&#34;&gt;doom-wasm&lt;/a&gt; project did the hard work of porting Chocolate Doom -&amp;gt; the faithful open-source recreation of the original DOOM engine -&amp;gt; to WebAssembly using Emscripten. That alone is a serious engineering effort. They then wrote &lt;code&gt;net_websockets.c&lt;/code&gt;, a transport adapter that replaced DOOM&amp;#39;s original IPX/UDP networking with WebSocket connections routed through Durable Objects on Cloudflare&amp;#39;s edge network.&lt;/p&gt;

&lt;p&gt;Their architecture looked like this:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;Player A (Browser)  ←WebSocket→  Cloudflare Edge (Durable Object)  ←WebSocket→  Player B (Browser)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;A Durable Object acted as the game room -maintaining a routing table of connected players and forwarding packets between them. Clean, elegant, and a great demo of edge computing.&lt;/p&gt;

&lt;p&gt;But there was a catch.&lt;/p&gt;

&lt;h3 id=&#34;what-they-kept-the-same-2&#34;&gt;What they kept the same&lt;/h3&gt;

&lt;p&gt;Cloudflare didn&amp;#39;t modify DOOM&amp;#39;s actual netcode. The game still used its original &lt;strong&gt;lockstep networking&lt;/strong&gt; model from 1993 -the same protocol designed for four PCs on a local area network connected by coaxial cable. Every player sends their inputs (which keys they pressed) to every other player, every single frame, and &lt;strong&gt;the game freezes until everyone&amp;#39;s inputs arrive&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;As their blog post acknowledged: &lt;em&gt;&amp;#34;The game only advances when everyone receives the commands from all the other players in the group.&amp;#34;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This worked in 1993 when your LAN had sub-millisecond latency. Over the internet, through WebSockets, through a routing layer? It meant choppy gameplay, freezes whenever anyone&amp;#39;s connection hiccupped, and a gameplay experience that felt more like a slideshow than a shooter.&lt;/p&gt;

&lt;p&gt;The Durable Object was also a single point of failure and a centralised dependency. No Cloudflare, no DOOM.&lt;/p&gt;

&lt;hr&gt;

&lt;h2 id=&#34;what-we-changed-everything-except-the-game-itself-2&#34;&gt;What We Changed (Everything Except the Game Itself)&lt;/h2&gt;

&lt;p&gt;We forked Cloudflare&amp;#39;s doom-wasm project and rebuilt the entire networking stack from scratch. Not just the transport layer -the fundamental model of how the game synchronises state between players.&lt;/p&gt;

&lt;p&gt;Here&amp;#39;s the before and after:&lt;/p&gt;

&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Cloudflare&amp;#39;s DOOM&lt;/th&gt;
&lt;th&gt;Open Source DOOM&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;

&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Transport&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;WebSockets → Cloudflare Edge&lt;/td&gt;
&lt;td&gt;P2P gossip via Iroh (QUIC)&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Server&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Durable Object (centralised)&lt;/td&gt;
&lt;td&gt;Auto-elected from players (decentralised)&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Sync model&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Lockstep (1993 original)&lt;/td&gt;
&lt;td&gt;Real-time hybrid (snapshots &#43; interpolation)&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Damage&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Simulated locally by all clients&lt;/td&gt;
&lt;td&gt;Host-authoritative events&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;NPCs/Monsters&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Simulated locally by all clients&lt;/td&gt;
&lt;td&gt;Host-authoritative snapshots&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Late join&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Not supported&lt;/td&gt;
&lt;td&gt;Fully supported&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Internet required&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Yes (Cloudflare Workers)&lt;/td&gt;
&lt;td&gt;No (works offline, P2P)&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Delivery&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Website (silentspacemarine.com)&lt;/td&gt;
&lt;td&gt;4.2MB file in a chat message&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Let&amp;#39;s break down each piece.&lt;/p&gt;

&lt;hr&gt;

&lt;h2 id=&#34;1-no-servers-no-problem-2&#34;&gt;1. No Servers, No Problem&lt;/h2&gt;

&lt;h3 id=&#34;the-simple-version-1-3&#34;&gt;The Simple Version&lt;/h3&gt;

&lt;p&gt;Cloudflare&amp;#39;s DOOM needed their servers to work. Ours doesn&amp;#39;t need &lt;em&gt;any&lt;/em&gt; servers. When you open the game, your device automatically figures out who should be the &amp;#34;host&amp;#34; --no configuration, no IP addresses, no port forwarding, no sign-ups. It just works.&lt;/p&gt;

&lt;p&gt;The game runs inside a &lt;strong&gt;.xdc file&lt;/strong&gt;, essentially a tiny 4.2MB zip archive containing the entire game. You literally send it as a file in a chat message. Your friend opens it. You&amp;#39;re playing DOOM together. The data travels directly between your devices through the chat app&amp;#39;s peer-to-peer channels.&lt;/p&gt;

&lt;h3 id=&#34;the-nerdy-version-1-3&#34;&gt;The Nerdy Version&lt;/h3&gt;

&lt;p&gt;We replaced &lt;code&gt;net_websockets.c&lt;/code&gt; with &lt;code&gt;net_webxdc.c&lt;/code&gt; -a transport module that speaks the &lt;a href=&#34;https://webxdc.org/&#34;&gt;WebXDC&lt;/a&gt; realtime channel protocol instead of WebSockets.&lt;/p&gt;

&lt;p&gt;WebXDC is an open standard for sandboxed web apps distributed inside chat messages. The app has &lt;strong&gt;zero internet access&lt;/strong&gt;, no fetch, no XMLHttpRequest, nothing. The only communication channel is &lt;code&gt;webxdc.joinRealtimeChannel()&lt;/code&gt;, which gives you an unreliable broadcast pipe to other instances of the same .xdc file in the same chat.&lt;/p&gt;

&lt;p&gt;Under the hood (in our primary platform, &lt;a href=&#34;https://github.com/nicholasopuni31/vector&#34;&gt;Vector&lt;/a&gt;), this channel is backed by &lt;a href=&#34;https://iroh.computer/&#34;&gt;Iroh&lt;/a&gt;, a QUIC-based peer-to-peer gossip protocol. Messages travel directly between devices, relayed through lightweight Iroh relay nodes only when direct connections aren&amp;#39;t possible. There are no game servers, no routing tables, no Durable Objects.&lt;/p&gt;

&lt;p&gt;Peer discovery happens over &lt;a href=&#34;https://nostr.com/&#34;&gt;Nostr&lt;/a&gt;, the decentralised social protocol. When you open a game, your Iroh node address is published as a Nostr event so other players can find you and establish a direct connection. The connection itself is encrypted end-to-end via &lt;a href=&#34;https://github.com/parres-hq/mdk&#34;&gt;Marmot&lt;/a&gt;, which implements the &lt;a href=&#34;https://messaginglayersecurity.rocks/&#34;&gt;MLS&lt;/a&gt; (Messaging Layer Security) protocol over Nostr. So every packet of DOOM multiplayer data, every position snapshot, every damage event, every frag, is encrypted with forward secrecy before it ever leaves your device.&lt;/p&gt;

&lt;p&gt;The wire format is minimal:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;[to: uint32 LE (4 bytes)][from: uint32 LE (4 bytes)][doom_payload]
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;JavaScript routes incoming packets by destination UID -only packets addressed to you (or broadcast address &lt;code&gt;0&lt;/code&gt;) get delivered to the WASM engine. Everything else is silently dropped.&lt;/p&gt;

&lt;p&gt;For performance, Vector provides a &lt;strong&gt;WebSocket fast-path&lt;/strong&gt;: the app connects to &lt;code&gt;ws://127.0.0.1:{random_port}/{token}&lt;/code&gt; -a localhost WebSocket server spun up by the Rust backend -giving near-zero-latency access to the Iroh gossip sender. Binary frames go straight to &lt;code&gt;sender.broadcast()&lt;/code&gt; with zero copies. Fallback path uses Tauri invoke with base91 encoding.&lt;/p&gt;

&lt;hr&gt;

&lt;h2 id=&#34;2-who-s-the-server-magic-2&#34;&gt;2. Who&amp;#39;s the Server? Magic.&lt;/h2&gt;

&lt;h3 id=&#34;the-simple-version-1-4&#34;&gt;The Simple Version&lt;/h3&gt;

&lt;p&gt;In a normal online game, someone runs a server, and everyone connects to it. In Open Source DOOM, there &lt;em&gt;is&lt;/em&gt; no predetermined server. When you open the game, all players silently negotiate who becomes the host. The person who opened the game first wins. This happens automatically in about three seconds, and you never even notice it.&lt;/p&gt;

&lt;h3 id=&#34;the-nerdy-version-1-4&#34;&gt;The Nerdy Version&lt;/h3&gt;

&lt;p&gt;Server election uses a dead-simple timestamp protocol over the broadcast channel:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Every instance broadcasts &lt;strong&gt;4 magic bytes&lt;/strong&gt; (&lt;code&gt;[42, 42, 42, 42]&lt;/code&gt;) every 300ms: &lt;em&gt;&amp;#34;I exist, who&amp;#39;s the server?&amp;#34;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Every instance responds to discovery requests with: &lt;code&gt;[43, 43, 43, 43][padding(4)][timestamp(8)]&lt;/code&gt; -where timestamp is &lt;code&gt;Date.now()&lt;/code&gt; from when the app first opened&lt;/li&gt;
&lt;li&gt;The instance with the &lt;strong&gt;earliest timestamp&lt;/strong&gt; wins&lt;/li&gt;
&lt;li&gt;After 3 seconds with no earlier challenger, you declare yourself server&lt;/li&gt;
&lt;li&gt;The elected server re-broadcasts its beacon every 3 seconds so late-joiners can discover it&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The server gets &lt;code&gt;instanceUID = 1&lt;/code&gt; (hardcoded). Clients get a random UID in &lt;code&gt;1–65534&lt;/code&gt;. This UID becomes their network address for the entire session -no DNS, no IP addresses, no NAT traversal headaches.&lt;/p&gt;

&lt;p&gt;The whole election algorithm is about 80 lines of JavaScript. It works over any broadcast transport. No configuration needed.&lt;/p&gt;

&lt;hr&gt;

&lt;h2 id=&#34;3-from-lockstep-to-real-time-the-big-one-2&#34;&gt;3. From Lockstep to Real-Time (The Big One)&lt;/h2&gt;

&lt;h3 id=&#34;the-simple-version-2-2&#34;&gt;The Simple Version&lt;/h3&gt;

&lt;p&gt;Original DOOM multiplayer works like a group of people writing a letter round-robin. Nobody can write their next line until everyone has received and read the previous line. If one person is slow, &lt;em&gt;everyone&lt;/em&gt; waits.&lt;/p&gt;

&lt;p&gt;We changed it to work more like a live conversation. Everyone talks at their own pace. If you miss a word, you can still follow along because the speaker periodically summarises where things stand. The result feels like a modern shooter -smooth movement, responsive controls, no freezing.&lt;/p&gt;

&lt;h3 id=&#34;the-nerdy-version-2-2&#34;&gt;The Nerdy Version&lt;/h3&gt;

&lt;p&gt;This was the most fundamental change: replacing DOOM&amp;#39;s pure lockstep synchronisation with a &lt;strong&gt;hybrid real-time model&lt;/strong&gt;. The ticcmd backbone remains (it&amp;#39;s too deeply embedded in Chocolate Doom&amp;#39;s deterministic physics to remove), but we layered three correction systems on top:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;a) Position Snapshots &#43; Exponential Smoothing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Every 2 tics (~57ms at 35 FPS), each player broadcasts a snapshot of their state:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;int data[9] = {
    mo-&amp;gt;x, mo-&amp;gt;y, mo-&amp;gt;z,        // World position (fixed-point)
    mo-&amp;gt;angle,                    // Facing direction
    mo-&amp;gt;momx, mo-&amp;gt;momy, mo-&amp;gt;momz, // Velocity
    attack_weapon,                // 0=idle, 1-9=attacking with weapon N
    latency                       // Round-trip time (ms)
};
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Remote players don&amp;#39;t run DOOM&amp;#39;s physics engine at all. Instead, &lt;code&gt;D_TickPlayerInterp()&lt;/code&gt; runs every tic:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Extrapolate&lt;/strong&gt; the target forward using stored momentum: &lt;code&gt;target_x &#43;= momx&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Smooth&lt;/strong&gt; toward the target, closing 60% of the remaining gap each tic:

&lt;pre&gt;&lt;code&gt;
#define INTERP_FRAC  39322  // 0.6 * 65536 (fixed-point)
mo-&amp;gt;x &#43;= FixedMul(target_x - mo-&amp;gt;x, INTERP_FRAC);
mo-&amp;gt;y &#43;= FixedMul(target_y - mo-&amp;gt;y, INTERP_FRAC);
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Teleport detection&lt;/strong&gt;: if the delta exceeds 128 map units, snap instantly (player respawned or hit a teleporter)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;One subtle but critical detail: &lt;strong&gt;angle is NOT interpolated&lt;/strong&gt;. The ticcmd&amp;#39;s &lt;code&gt;angleturn&lt;/code&gt; field is applied deterministically by &lt;code&gt;P_MovePlayer()&lt;/code&gt; and stays in sync across machines. Interpolating angle toward a stale snapshot would &lt;em&gt;fight&lt;/em&gt; the ticcmd, causing visible rotation jitter of up to 90 degrees. We learned this the hard way.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;b) Attack Animation Sync&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Remote players&amp;#39; attacks are driven by snapshot data, not ticcmds. When a snapshot reports &lt;code&gt;attack_weapon &amp;gt; 0&lt;/code&gt;, we set the &lt;code&gt;S_PLAY_ATK1&lt;/code&gt; animation state and play the weapon fire sound. An 8-tic animation lock prevents local state transitions from overriding it.&lt;/p&gt;

&lt;p&gt;To prevent feedback loops, we track &lt;code&gt;last_received_attack[]&lt;/code&gt; -the raw flag as received from the network -and broadcast &lt;em&gt;that&lt;/em&gt;, not the lock-modified mobj state. Without this, attack animations would echo infinitely.&lt;/p&gt;

&lt;hr&gt;

&lt;h2 id=&#34;4-i-shot-you-no-you-didn-t-2&#34;&gt;4. &amp;#34;I Shot You!&amp;#34; &amp;#34;No You Didn&amp;#39;t!&amp;#34;&lt;/h2&gt;

&lt;h3 id=&#34;the-simple-version-3-2&#34;&gt;The Simple Version&lt;/h3&gt;

&lt;p&gt;In the original DOOM, every computer runs its own copy of the game physics. When you shoot someone, &lt;em&gt;your&lt;/em&gt; computer calculates the damage, and &lt;em&gt;their&lt;/em&gt; computer calculates the damage, and because the game is in lockstep, they always agree.&lt;/p&gt;

&lt;p&gt;With our real-time model, that guarantee vanishes -your screen and theirs might show slightly different positions. So we made one player (the host) the referee. When you shoot someone, you tell the host &lt;em&gt;&amp;#34;I hit Player 2 for 50 damage&amp;#34;&lt;/em&gt;. The host checks the physics, applies the damage if it&amp;#39;s valid, and announces the result to everyone. One truth, no arguments.&lt;/p&gt;

&lt;h3 id=&#34;the-nerdy-version-3-2&#34;&gt;The Nerdy Version&lt;/h3&gt;

&lt;p&gt;We implemented an &lt;strong&gt;event-based host-authority model&lt;/strong&gt; for all game-changing state:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Damage path:&lt;/strong&gt;&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;Client A fires weapon → bullet hits Player B locally
  → Client A sends DAMAGE_EVENT to host: {target: B, damage: 50, source: A}
  → Client A applies VISUAL FEEDBACK ONLY (screen flash, attacker tracking)
  → Client A does NOT reduce Player B&amp;#39;s health

Host receives DAMAGE_EVENT:
  → Sets damage_from_event = true (bypasses remote-source skip)
  → Calls P_DamageMobj() with full physics simulation
  → New health broadcasted via HEALTH_AUTH packet next snapshot cycle

All clients receive HEALTH_AUTH:
  → Apply as ground truth
  → Host says dead, client says alive? → P_KillMobj()
  → Host says alive, client says dead? → Trigger respawn
  → Health decreased? → Play pain animation
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The &lt;code&gt;damage_from_event&lt;/code&gt; flag is critical. Without it, the host faces a double-damage problem: it receives both the ticcmd attack (from the lockstep backbone) AND the explicit damage event. The flag ensures only the event path applies.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Other host-authoritative systems:&lt;/strong&gt;
- &lt;strong&gt;USE events&lt;/strong&gt;: Client presses &amp;#39;E&amp;#39; near a door → sends &lt;code&gt;USE_EVENT&lt;/code&gt; → host calls &lt;code&gt;P_UseLines()&lt;/code&gt; → door opens for everyone
- &lt;strong&gt;Respawns&lt;/strong&gt;: Client dies → sends &lt;code&gt;RESPAWN_REQUEST&lt;/code&gt; → host sets &lt;code&gt;playerstate = PST_REBORN&lt;/code&gt;
- &lt;strong&gt;Kill messages&lt;/strong&gt;: Host broadcasts &lt;code&gt;KILL_MSG&lt;/code&gt; when a player dies → displayed on all screens&lt;/p&gt;

&lt;hr&gt;

&lt;h2 id=&#34;5-making-monsters-agree-2&#34;&gt;5. Making Monsters Agree&lt;/h2&gt;

&lt;h3 id=&#34;the-simple-version-4-2&#34;&gt;The Simple Version&lt;/h3&gt;

&lt;p&gt;DOOM has dozens of monsters per level, each running their own AI -chasing you, shooting fireballs, infighting with each other. In the original game, every computer simulates every monster identically (because lockstep ensures they all see the same inputs). In our version, only the host simulates the monsters. Everyone else just sees the results -like watching a puppet show where only the puppeteer knows the script, but the audience sees the performance in real-time.&lt;/p&gt;

&lt;h3 id=&#34;the-nerdy-version-4-2&#34;&gt;The Nerdy Version&lt;/h3&gt;

&lt;p&gt;We built a full NPC synchronisation system (&lt;code&gt;p_netsync.c/h&lt;/code&gt;):&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Registry&lt;/strong&gt;: Every monster and barrel gets a unique &lt;code&gt;net_id&lt;/code&gt; via &lt;code&gt;P_NetAssignId()&lt;/code&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;mobj_t *net_mobj_table[MAX_NET_MOBJS];  // 512 slots
unsigned short net_id_counter;            // Sequential allocator
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;strong&gt;Host broadcasts&lt;/strong&gt; (every 2 tics) a compact binary snapshot:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;[npc_count: u8][gametic: u16]
Per NPC (20 bytes): net_id(2) x(4) y(4) z(4) angle(1) statenum(2) health(2) flags(1)
[sector_count: u8]
Per changed sector (10 bytes): sector_id(2) ceiling(4) floor(4)
[missile_count: u8]
Per missile (32 bytes): source_net_id(2) type(2) x(4) y(4) z(4) momx(4) momy(4) momz(4) angle(4)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;strong&gt;Client-side&lt;/strong&gt;: In &lt;code&gt;P_MobjThinker()&lt;/code&gt;, clients skip physics entirely for any mobj with &lt;code&gt;net_id &amp;gt; 0&lt;/code&gt;. Only the animation tic counter runs. State changes use &lt;code&gt;P_SetMobjStateNoAction()&lt;/code&gt; -which applies the visual state WITHOUT executing action functions. This prevents clients from independently spawning projectiles, running AI decisions, or playing duplicate sounds.&lt;/p&gt;

&lt;p&gt;The sector data keeps doors and lifts in sync. The missile data ensures fireballs and rockets appear on all screens.&lt;/p&gt;

&lt;hr&gt;

&lt;h2 id=&#34;6-room-for-one-more-mid-game-joining-2&#34;&gt;6. &amp;#34;Room for One More?&amp;#34; -Mid-Game Joining&lt;/h2&gt;

&lt;h3 id=&#34;the-simple-version-5-2&#34;&gt;The Simple Version&lt;/h3&gt;

&lt;p&gt;Original DOOM didn&amp;#39;t let you join a game already in progress. Everyone had to be there at the start, or too bad. Our version lets players drop in mid-game. You open the .xdc, the game finds the server, and you spawn in -even if everyone else is already knee-deep in the dead.&lt;/p&gt;

&lt;h3 id=&#34;the-nerdy-version-5-2&#34;&gt;The Nerdy Version&lt;/h3&gt;

&lt;p&gt;Late joining required solving several hairy problems:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tic synchronisation&lt;/strong&gt;: The late joiner&amp;#39;s tic counter is meaningless -they weren&amp;#39;t there for tics 0 through N. When the server accepts a late join, it sends &lt;code&gt;settings-&amp;gt;start_tic&lt;/code&gt; set to the current server tic. The client aligns its &lt;code&gt;recvtic&lt;/code&gt;, &lt;code&gt;maketic&lt;/code&gt;, and &lt;code&gt;gametic&lt;/code&gt; to this value, syncing the 8-bit tic sequence numbers with the server&amp;#39;s counter.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Double-slot bug&lt;/strong&gt;: We found that &lt;code&gt;NET_SV_AssignPlayers()&lt;/code&gt; could assign the new client to a slot that was already used, creating a ghost duplicate. The fix: &lt;code&gt;HandleLateJoin()&lt;/code&gt; explicitly clears any pre-existing slots for the new client before assigning a fresh one.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ghost body cleanup&lt;/strong&gt;: When a player disconnects and reconnects (or the quit/rejoin cycle fires), their old mobj lingers in the world as an invisible collision obstacle. &lt;code&gt;P_SpawnPlayer()&lt;/code&gt; now checks for and removes any existing mobj before spawning:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;if (p-&amp;gt;mo) {
    p-&amp;gt;mo-&amp;gt;player = NULL;
    P_RemoveMobj(p-&amp;gt;mo);
    p-&amp;gt;mo = NULL;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;strong&gt;Name propagation&lt;/strong&gt;: When a new player joins, every existing player re-broadcasts their name, so the joiner&amp;#39;s HUD displays the correct names instead of the defaults (&amp;#34;Green&amp;#34;, &amp;#34;Indigo&amp;#34;, &amp;#34;Brown&amp;#34;, &amp;#34;Red&amp;#34;).&lt;/p&gt;

&lt;hr&gt;

&lt;h2 id=&#34;7-fits-in-a-chat-message-2&#34;&gt;7. Fits in a Chat Message&lt;/h2&gt;

&lt;h3 id=&#34;the-simple-version-6-2&#34;&gt;The Simple Version&lt;/h3&gt;

&lt;p&gt;The entire game -engine, levels, monsters, weapons, networking, touch controls, gamepad support, all of it -fits in a &lt;strong&gt;4.2 megabyte file&lt;/strong&gt;. That&amp;#39;s smaller than most photos your phone takes. You send it in a chat message like you&amp;#39;d send a meme. Your friend taps it, and they&amp;#39;re in the game. No app store, no downloads, no accounts, no updates.&lt;/p&gt;

&lt;h3 id=&#34;the-nerdy-version-6-2&#34;&gt;The Nerdy Version&lt;/h3&gt;

&lt;p&gt;The .xdc format is just a ZIP archive with a different extension. Ours contains:&lt;/p&gt;

&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;File&lt;/th&gt;
&lt;th&gt;Size (compressed)&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;

&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;vector-doom.wasm&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;~2.7 MB&lt;/td&gt;
&lt;td&gt;Chocolate Doom engine (Emscripten, -O3)&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;code&gt;doom1.wad&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;~1.7 MB&lt;/td&gt;
&lt;td&gt;DOOM shareware levels (freely distributable)&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;code&gt;vector-doom.js&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;~160 KB&lt;/td&gt;
&lt;td&gt;Emscripten runtime (terser-minified, 58% reduction)&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;code&gt;index.html&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;~12 KB&lt;/td&gt;
&lt;td&gt;UI, touch controls, gamepad support, CRT visual theme&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;code&gt;webxdc-net.js&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;~3 KB&lt;/td&gt;
&lt;td&gt;Server election &#43; packet routing&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;code&gt;icon.png&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;~90 KB&lt;/td&gt;
&lt;td&gt;App icon&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;code&gt;bg.jpg&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;~100 KB&lt;/td&gt;
&lt;td&gt;Background artwork&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;code&gt;default.cfg&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;~2 KB&lt;/td&gt;
&lt;td&gt;Default key bindings&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;code&gt;manifest.toml&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;~100 B&lt;/td&gt;
&lt;td&gt;WebXDC metadata&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The WASM binary and WAD compress extremely well in ZIP (65% and 58% respectively), bringing the total to 4.2MB.&lt;/p&gt;

&lt;p&gt;The build pipeline:
1. Emscripten compiles Chocolate Doom &#43; our modifications to WASM (&lt;code&gt;emmake make -j4&lt;/code&gt;)
2. &lt;code&gt;webxdc-net.js&lt;/code&gt; is injected as &lt;code&gt;--pre-js&lt;/code&gt; (runs before WASM initialises)
3. JS is minified with terser in parallel
4. HTML is minified (strip comments, collapse whitespace)
5. Everything zipped at maximum compression (&lt;code&gt;zip -9&lt;/code&gt;)&lt;/p&gt;

&lt;p&gt;The game runs on any WebXDC-compatible messenger. We built it for &lt;a href=&#34;https://vector.im&#34;&gt;Vector&lt;/a&gt; (a Nostr-based messenger), but it works in &lt;a href=&#34;https://delta.chat/&#34;&gt;Delta Chat&lt;/a&gt; and potentially any app that implements the WebXDC standard.&lt;/p&gt;

&lt;hr&gt;

&lt;h2 id=&#34;the-full-stack-from-keypress-to-frag-2&#34;&gt;The Full Stack, From Keypress to Frag&lt;/h2&gt;

&lt;p&gt;Here&amp;#39;s what happens when you press the fire button on your phone:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;1. Your finger hits the Fire button (HTML touch event)
2. JavaScript calls Module._inject_key_event(0, 32)     // keydown, spacebar
3. DOOM&amp;#39;s event queue receives ev_keydown
4. D_ProcessEvents() → G_Responder() builds ticcmd with BT_ATTACK
5. TryRunTics() executes the tic -your weapon fires, P_LineAttack() traces a hitscan
6. Bullet hits Player 2 → P_DamageMobj() → instead of applying damage:
   → NET_CL_SendDamageEvent(target=2, damage=50, source=you)
7. Every 2 tics, your position snapshot broadcasts via realtimeChannel:
   → JS encodes [to(4)][from(4)][snapshot] → WebSocket → Iroh gossip → peer devices
8. Host receives damage event → validates → applies → broadcasts HEALTH_AUTH
9. Player 2&amp;#39;s screen: health drops, pain flash plays, kill message appears
10. Your screen: the host&amp;#39;s HEALTH_AUTH confirms the kill
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Total time from keypress to kill confirmation: roughly 100-200ms depending on network conditions. No servers touched. No corporation involved. Just two chat apps talking directly to each other.&lt;/p&gt;

&lt;hr&gt;

&lt;h2 id=&#34;standing-on-the-shoulders-of-giants-2&#34;&gt;Standing on the Shoulders of Giants&lt;/h2&gt;

&lt;p&gt;None of this would exist without:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;https://www.idsoftware.com/&#34;&gt;id Software&lt;/a&gt;&lt;/strong&gt; for open-sourcing the DOOM engine in 1997 -a decision that created an entire modding ecosystem and directly enabled everything described here&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;https://www.chocolate-doom.org/&#34;&gt;Chocolate Doom&lt;/a&gt;&lt;/strong&gt; for faithfully recreating the original engine in portable, hackable C&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;https://blog.cloudflare.com/doom-multiplayer-workers/&#34;&gt;Cloudflare&lt;/a&gt;&lt;/strong&gt; for proving DOOM-in-WebAssembly was viable and open-sourcing their &lt;a href=&#34;https://github.com/cloudflare/doom-wasm&#34;&gt;doom-wasm&lt;/a&gt; port -the foundation we forked&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;https://emscripten.org/&#34;&gt;Emscripten&lt;/a&gt;&lt;/strong&gt; for making C-to-WASM compilation actually work&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;https://iroh.computer/&#34;&gt;Iroh&lt;/a&gt;&lt;/strong&gt; (by n0.computer) for the QUIC-based P2P gossip protocol that makes serverless real-time gaming possible&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The &lt;a href=&#34;https://webxdc.org/&#34;&gt;WebXDC&lt;/a&gt; community&lt;/strong&gt; for defining an open standard for sandboxed web apps in chat messages&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And a special note: the networking architecture of Open Source DOOM was designed and implemented as a collaboration between a human developer and an AI (&lt;a href=&#34;https://claude.ai&#34;&gt;Claude&lt;/a&gt;, by Anthropic). Not generated and pasted -&lt;em&gt;collaborated on.&lt;/em&gt; Hundreds of iterations, debugging sessions at 3am with hex dumps of gossip packets, heated debates about whether to interpolate angles (don&amp;#39;t), and moments of genuine surprise when things just... worked.&lt;/p&gt;

&lt;hr&gt;

&lt;h2 id=&#34;try-it-2&#34;&gt;Try It&lt;/h2&gt;

&lt;p&gt;Open-Source DOOM is free, open-source, and available today.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://image.nostr.build/90497863e88cc21741a1493be081716f5af3664eced7fbdb063c8f783df534fd.jpg&#34; alt=&#34;image&#34;/&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Play it&lt;/strong&gt;: Download &lt;a href=&#34;https://vectorapp.io&#34;&gt;Vector&lt;/a&gt;, open &lt;strong&gt;Vector Nexus&lt;/strong&gt; (our decentralised in-app Mini App store), and find &lt;strong&gt;DOOM&lt;/strong&gt; in the Multiplayer category. Send it to a friend or group chat and start fragging - no manual file management needed.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://image.nostr.build/149d09299e73fe56d904f9116b67c22b67935d36b4e263f346d7a179bac605b7.jpg&#34; alt=&#34;image&#34;/&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Read the code&lt;/strong&gt;: The full source is available at &lt;a href=&#34;https://github.com/VectorPrivacy/DOOM&#34;&gt;github.com/nicholasopuni31/doom-wasm&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Build on it&lt;/strong&gt;: The WebXDC realtime channel pattern we developed here works for any real-time multiplayer game.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;If DOOM is &amp;#34;Hello, World&amp;#34; for computing, then Open Source DOOM is &amp;#34;Hello, World&amp;#34; for decentralised gaming.&lt;/em&gt;&lt;/p&gt;

&lt;hr&gt;

&lt;p&gt;&lt;em&gt;Published March 2026. Written by&lt;/em&gt; &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub16ye7evyevwnl0fc9hujsxf9zym72e063awn0pvde0huvpyec5nyq4dg4wn&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;JSKitty&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub16ye…g4wn&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
 &lt;/blockquote&gt;
    </content>
    <updated>2026-03-23T15:29:54Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs2d992qc3davajncuj62njn2wfcgkark6xvd57t2y4ntxwvd5lxcszyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6cpls9k</id>
    
      <title type="html">Welcome to Nostr, Reddit. 19,000&#43; Views on r/doom: ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs2d992qc3davajncuj62njn2wfcgkark6xvd57t2y4ntxwvd5lxcszyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6cpls9k" />
    <content type="html">
      Welcome to Nostr, Reddit.&lt;br/&gt;&lt;br/&gt;19,000&#43; Views on r/doom:&lt;br/&gt; &lt;img src=&#34;https://image.nostr.build/8a6211449aeebf54af518141cbcbd09ccb15baa31132d4591b8a72a5d2ede300.png&#34;&gt; &lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://www.reddit.com/r/Doom/comments/1rxezsc/opensource_doom_realtime_multiplayer_with_no/&#34;&gt;https://www.reddit.com/r/Doom/comments/1rxezsc/opensource_doom_realtime_multiplayer_with_no/&lt;/a&gt;&lt;blockquote class=&#34;border-l-05rem border-l-strongpink border-solid&#34;&gt;&lt;div class=&#34;-ml-4 bg-gradient-to-r from-gray-100 dark:from-zinc-800 to-transparent mr-0 mt-0 mb-4 pl-4 pr-2 py-2&#34;&gt;quoting  &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Article&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/naddr1qvzqqqr4gupzpw8e9es7w829s6hxle5hpaea6r7m3yqsjky79aqhhm6ytwa6jtydqq2ng66wwpckw4t60f49q3m3gddyknf4d4mrxhqars5&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;naddr1qv…ars5&lt;/a&gt;&lt;/span&gt; &lt;/div&gt; 
&lt;h1 id=&#34;open-source-doom-how-we-brought-real-time-multiplayer-to-a-1993-classic-no-servers-required-5&#34;&gt;Open-Source DOOM: How We Brought Real-Time Multiplayer to a 1993 Classic. No Servers Required.&lt;/h1&gt;

&lt;p&gt;A Breakthrough in Decentralized Gaming by &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub16ye7evyevwnl0fc9hujsxf9zym72e063awn0pvde0huvpyec5nyq4dg4wn&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;JSKitty&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub16ye…g4wn&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;

&lt;hr&gt;

&lt;p&gt;In May 2021, Cloudflare did something wonderful. They took DOOM -the 1993 game that defined an entire genre -compiled it to WebAssembly, wired up WebSocket multiplayer through their Durable Objects edge platform, and &lt;a href=&#34;https://blog.cloudflare.com/doom-multiplayer-workers/&#34;&gt;wrote a fantastic blog post about it&lt;/a&gt;. As Celso Martinho put it: &lt;em&gt;&amp;#34;Running Doom is effectively the new &amp;#39;Hello, World&amp;#39; in computing.&amp;#34;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;We loved it. And then we thought: &lt;em&gt;what if we could take it further?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;What if multiplayer DOOM didn&amp;#39;t need Cloudflare&amp;#39;s servers -or anyone&amp;#39;s servers? What if it didn&amp;#39;t need the internet at all? What if you could send a 4MB file to a friend in a chat message and be fragging each other within seconds, purely peer-to-peer, with the game feeling like a modern real-time shooter instead of a 1994 LAN party?&lt;/p&gt;

&lt;p&gt;That&amp;#39;s what we built. We call it &lt;strong&gt;Open-Source DOOM&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It&amp;#39;s powered by a stack of open technologies: &lt;a href=&#34;https://www.chocolate-doom.org/&#34;&gt;Chocolate Doom&lt;/a&gt; compiled to &lt;a href=&#34;https://webassembly.org/&#34;&gt;WebAssembly&lt;/a&gt; via &lt;a href=&#34;https://emscripten.org/&#34;&gt;Emscripten&lt;/a&gt;, distributed as a &lt;a href=&#34;https://webxdc.org/&#34;&gt;WebXDC&lt;/a&gt; mini-app, with peer discovery over &lt;a href=&#34;https://nostr.com/&#34;&gt;Nostr&lt;/a&gt;, end-to-end encryption via &lt;a href=&#34;https://github.com/parres-hq/mdk&#34;&gt;Marmot&lt;/a&gt; (MLS over Nostr), and real-time P2P data transport through &lt;a href=&#34;https://iroh.computer/&#34;&gt;Iroh&lt;/a&gt; (QUIC-based gossip). Every layer is open-source. Every packet is encrypted. No servers required.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://image.nostr.build/2768aba5d0e616d626f7877966feec7e7f3c5822a552e5320305c635a8c58697.jpg&#34; alt=&#34;image&#34;/&gt;&lt;/p&gt;

&lt;hr&gt;

&lt;h2 id=&#34;what-cloudflare-built-and-why-it-s-great-5&#34;&gt;What Cloudflare Built (And Why It&amp;#39;s Great)&lt;/h2&gt;

&lt;p&gt;Credit where it&amp;#39;s due. Cloudflare&amp;#39;s &lt;a href=&#34;https://github.com/cloudflare/doom-wasm&#34;&gt;doom-wasm&lt;/a&gt; project did the hard work of porting Chocolate Doom -&amp;gt; the faithful open-source recreation of the original DOOM engine -&amp;gt; to WebAssembly using Emscripten. That alone is a serious engineering effort. They then wrote &lt;code&gt;net_websockets.c&lt;/code&gt;, a transport adapter that replaced DOOM&amp;#39;s original IPX/UDP networking with WebSocket connections routed through Durable Objects on Cloudflare&amp;#39;s edge network.&lt;/p&gt;

&lt;p&gt;Their architecture looked like this:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;Player A (Browser)  ←WebSocket→  Cloudflare Edge (Durable Object)  ←WebSocket→  Player B (Browser)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;A Durable Object acted as the game room -maintaining a routing table of connected players and forwarding packets between them. Clean, elegant, and a great demo of edge computing.&lt;/p&gt;

&lt;p&gt;But there was a catch.&lt;/p&gt;

&lt;h3 id=&#34;what-they-kept-the-same-5&#34;&gt;What they kept the same&lt;/h3&gt;

&lt;p&gt;Cloudflare didn&amp;#39;t modify DOOM&amp;#39;s actual netcode. The game still used its original &lt;strong&gt;lockstep networking&lt;/strong&gt; model from 1993 -the same protocol designed for four PCs on a local area network connected by coaxial cable. Every player sends their inputs (which keys they pressed) to every other player, every single frame, and &lt;strong&gt;the game freezes until everyone&amp;#39;s inputs arrive&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;As their blog post acknowledged: &lt;em&gt;&amp;#34;The game only advances when everyone receives the commands from all the other players in the group.&amp;#34;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This worked in 1993 when your LAN had sub-millisecond latency. Over the internet, through WebSockets, through a routing layer? It meant choppy gameplay, freezes whenever anyone&amp;#39;s connection hiccupped, and a gameplay experience that felt more like a slideshow than a shooter.&lt;/p&gt;

&lt;p&gt;The Durable Object was also a single point of failure and a centralised dependency. No Cloudflare, no DOOM.&lt;/p&gt;

&lt;hr&gt;

&lt;h2 id=&#34;what-we-changed-everything-except-the-game-itself-5&#34;&gt;What We Changed (Everything Except the Game Itself)&lt;/h2&gt;

&lt;p&gt;We forked Cloudflare&amp;#39;s doom-wasm project and rebuilt the entire networking stack from scratch. Not just the transport layer -the fundamental model of how the game synchronises state between players.&lt;/p&gt;

&lt;p&gt;Here&amp;#39;s the before and after:&lt;/p&gt;

&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Cloudflare&amp;#39;s DOOM&lt;/th&gt;
&lt;th&gt;Open Source DOOM&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;

&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Transport&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;WebSockets → Cloudflare Edge&lt;/td&gt;
&lt;td&gt;P2P gossip via Iroh (QUIC)&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Server&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Durable Object (centralised)&lt;/td&gt;
&lt;td&gt;Auto-elected from players (decentralised)&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Sync model&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Lockstep (1993 original)&lt;/td&gt;
&lt;td&gt;Real-time hybrid (snapshots &#43; interpolation)&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Damage&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Simulated locally by all clients&lt;/td&gt;
&lt;td&gt;Host-authoritative events&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;NPCs/Monsters&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Simulated locally by all clients&lt;/td&gt;
&lt;td&gt;Host-authoritative snapshots&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Late join&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Not supported&lt;/td&gt;
&lt;td&gt;Fully supported&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Internet required&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Yes (Cloudflare Workers)&lt;/td&gt;
&lt;td&gt;No (works offline, P2P)&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Delivery&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Website (silentspacemarine.com)&lt;/td&gt;
&lt;td&gt;4.2MB file in a chat message&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Let&amp;#39;s break down each piece.&lt;/p&gt;

&lt;hr&gt;

&lt;h2 id=&#34;1-no-servers-no-problem-5&#34;&gt;1. No Servers, No Problem&lt;/h2&gt;

&lt;h3 id=&#34;the-simple-version-1-9&#34;&gt;The Simple Version&lt;/h3&gt;

&lt;p&gt;Cloudflare&amp;#39;s DOOM needed their servers to work. Ours doesn&amp;#39;t need &lt;em&gt;any&lt;/em&gt; servers. When you open the game, your device automatically figures out who should be the &amp;#34;host&amp;#34; --no configuration, no IP addresses, no port forwarding, no sign-ups. It just works.&lt;/p&gt;

&lt;p&gt;The game runs inside a &lt;strong&gt;.xdc file&lt;/strong&gt;, essentially a tiny 4.2MB zip archive containing the entire game. You literally send it as a file in a chat message. Your friend opens it. You&amp;#39;re playing DOOM together. The data travels directly between your devices through the chat app&amp;#39;s peer-to-peer channels.&lt;/p&gt;

&lt;h3 id=&#34;the-nerdy-version-1-9&#34;&gt;The Nerdy Version&lt;/h3&gt;

&lt;p&gt;We replaced &lt;code&gt;net_websockets.c&lt;/code&gt; with &lt;code&gt;net_webxdc.c&lt;/code&gt; -a transport module that speaks the &lt;a href=&#34;https://webxdc.org/&#34;&gt;WebXDC&lt;/a&gt; realtime channel protocol instead of WebSockets.&lt;/p&gt;

&lt;p&gt;WebXDC is an open standard for sandboxed web apps distributed inside chat messages. The app has &lt;strong&gt;zero internet access&lt;/strong&gt;, no fetch, no XMLHttpRequest, nothing. The only communication channel is &lt;code&gt;webxdc.joinRealtimeChannel()&lt;/code&gt;, which gives you an unreliable broadcast pipe to other instances of the same .xdc file in the same chat.&lt;/p&gt;

&lt;p&gt;Under the hood (in our primary platform, &lt;a href=&#34;https://github.com/nicholasopuni31/vector&#34;&gt;Vector&lt;/a&gt;), this channel is backed by &lt;a href=&#34;https://iroh.computer/&#34;&gt;Iroh&lt;/a&gt;, a QUIC-based peer-to-peer gossip protocol. Messages travel directly between devices, relayed through lightweight Iroh relay nodes only when direct connections aren&amp;#39;t possible. There are no game servers, no routing tables, no Durable Objects.&lt;/p&gt;

&lt;p&gt;Peer discovery happens over &lt;a href=&#34;https://nostr.com/&#34;&gt;Nostr&lt;/a&gt;, the decentralised social protocol. When you open a game, your Iroh node address is published as a Nostr event so other players can find you and establish a direct connection. The connection itself is encrypted end-to-end via &lt;a href=&#34;https://github.com/parres-hq/mdk&#34;&gt;Marmot&lt;/a&gt;, which implements the &lt;a href=&#34;https://messaginglayersecurity.rocks/&#34;&gt;MLS&lt;/a&gt; (Messaging Layer Security) protocol over Nostr. So every packet of DOOM multiplayer data, every position snapshot, every damage event, every frag, is encrypted with forward secrecy before it ever leaves your device.&lt;/p&gt;

&lt;p&gt;The wire format is minimal:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;[to: uint32 LE (4 bytes)][from: uint32 LE (4 bytes)][doom_payload]
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;JavaScript routes incoming packets by destination UID -only packets addressed to you (or broadcast address &lt;code&gt;0&lt;/code&gt;) get delivered to the WASM engine. Everything else is silently dropped.&lt;/p&gt;

&lt;p&gt;For performance, Vector provides a &lt;strong&gt;WebSocket fast-path&lt;/strong&gt;: the app connects to &lt;code&gt;ws://127.0.0.1:{random_port}/{token}&lt;/code&gt; -a localhost WebSocket server spun up by the Rust backend -giving near-zero-latency access to the Iroh gossip sender. Binary frames go straight to &lt;code&gt;sender.broadcast()&lt;/code&gt; with zero copies. Fallback path uses Tauri invoke with base91 encoding.&lt;/p&gt;

&lt;hr&gt;

&lt;h2 id=&#34;2-who-s-the-server-magic-5&#34;&gt;2. Who&amp;#39;s the Server? Magic.&lt;/h2&gt;

&lt;h3 id=&#34;the-simple-version-1-10&#34;&gt;The Simple Version&lt;/h3&gt;

&lt;p&gt;In a normal online game, someone runs a server, and everyone connects to it. In Open Source DOOM, there &lt;em&gt;is&lt;/em&gt; no predetermined server. When you open the game, all players silently negotiate who becomes the host. The person who opened the game first wins. This happens automatically in about three seconds, and you never even notice it.&lt;/p&gt;

&lt;h3 id=&#34;the-nerdy-version-1-10&#34;&gt;The Nerdy Version&lt;/h3&gt;

&lt;p&gt;Server election uses a dead-simple timestamp protocol over the broadcast channel:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Every instance broadcasts &lt;strong&gt;4 magic bytes&lt;/strong&gt; (&lt;code&gt;[42, 42, 42, 42]&lt;/code&gt;) every 300ms: &lt;em&gt;&amp;#34;I exist, who&amp;#39;s the server?&amp;#34;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Every instance responds to discovery requests with: &lt;code&gt;[43, 43, 43, 43][padding(4)][timestamp(8)]&lt;/code&gt; -where timestamp is &lt;code&gt;Date.now()&lt;/code&gt; from when the app first opened&lt;/li&gt;
&lt;li&gt;The instance with the &lt;strong&gt;earliest timestamp&lt;/strong&gt; wins&lt;/li&gt;
&lt;li&gt;After 3 seconds with no earlier challenger, you declare yourself server&lt;/li&gt;
&lt;li&gt;The elected server re-broadcasts its beacon every 3 seconds so late-joiners can discover it&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The server gets &lt;code&gt;instanceUID = 1&lt;/code&gt; (hardcoded). Clients get a random UID in &lt;code&gt;1–65534&lt;/code&gt;. This UID becomes their network address for the entire session -no DNS, no IP addresses, no NAT traversal headaches.&lt;/p&gt;

&lt;p&gt;The whole election algorithm is about 80 lines of JavaScript. It works over any broadcast transport. No configuration needed.&lt;/p&gt;

&lt;hr&gt;

&lt;h2 id=&#34;3-from-lockstep-to-real-time-the-big-one-5&#34;&gt;3. From Lockstep to Real-Time (The Big One)&lt;/h2&gt;

&lt;h3 id=&#34;the-simple-version-2-5&#34;&gt;The Simple Version&lt;/h3&gt;

&lt;p&gt;Original DOOM multiplayer works like a group of people writing a letter round-robin. Nobody can write their next line until everyone has received and read the previous line. If one person is slow, &lt;em&gt;everyone&lt;/em&gt; waits.&lt;/p&gt;

&lt;p&gt;We changed it to work more like a live conversation. Everyone talks at their own pace. If you miss a word, you can still follow along because the speaker periodically summarises where things stand. The result feels like a modern shooter -smooth movement, responsive controls, no freezing.&lt;/p&gt;

&lt;h3 id=&#34;the-nerdy-version-2-5&#34;&gt;The Nerdy Version&lt;/h3&gt;

&lt;p&gt;This was the most fundamental change: replacing DOOM&amp;#39;s pure lockstep synchronisation with a &lt;strong&gt;hybrid real-time model&lt;/strong&gt;. The ticcmd backbone remains (it&amp;#39;s too deeply embedded in Chocolate Doom&amp;#39;s deterministic physics to remove), but we layered three correction systems on top:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;a) Position Snapshots &#43; Exponential Smoothing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Every 2 tics (~57ms at 35 FPS), each player broadcasts a snapshot of their state:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;int data[9] = {
    mo-&amp;gt;x, mo-&amp;gt;y, mo-&amp;gt;z,        // World position (fixed-point)
    mo-&amp;gt;angle,                    // Facing direction
    mo-&amp;gt;momx, mo-&amp;gt;momy, mo-&amp;gt;momz, // Velocity
    attack_weapon,                // 0=idle, 1-9=attacking with weapon N
    latency                       // Round-trip time (ms)
};
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Remote players don&amp;#39;t run DOOM&amp;#39;s physics engine at all. Instead, &lt;code&gt;D_TickPlayerInterp()&lt;/code&gt; runs every tic:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Extrapolate&lt;/strong&gt; the target forward using stored momentum: &lt;code&gt;target_x &#43;= momx&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Smooth&lt;/strong&gt; toward the target, closing 60% of the remaining gap each tic:

&lt;pre&gt;&lt;code&gt;
#define INTERP_FRAC  39322  // 0.6 * 65536 (fixed-point)
mo-&amp;gt;x &#43;= FixedMul(target_x - mo-&amp;gt;x, INTERP_FRAC);
mo-&amp;gt;y &#43;= FixedMul(target_y - mo-&amp;gt;y, INTERP_FRAC);
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Teleport detection&lt;/strong&gt;: if the delta exceeds 128 map units, snap instantly (player respawned or hit a teleporter)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;One subtle but critical detail: &lt;strong&gt;angle is NOT interpolated&lt;/strong&gt;. The ticcmd&amp;#39;s &lt;code&gt;angleturn&lt;/code&gt; field is applied deterministically by &lt;code&gt;P_MovePlayer()&lt;/code&gt; and stays in sync across machines. Interpolating angle toward a stale snapshot would &lt;em&gt;fight&lt;/em&gt; the ticcmd, causing visible rotation jitter of up to 90 degrees. We learned this the hard way.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;b) Attack Animation Sync&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Remote players&amp;#39; attacks are driven by snapshot data, not ticcmds. When a snapshot reports &lt;code&gt;attack_weapon &amp;gt; 0&lt;/code&gt;, we set the &lt;code&gt;S_PLAY_ATK1&lt;/code&gt; animation state and play the weapon fire sound. An 8-tic animation lock prevents local state transitions from overriding it.&lt;/p&gt;

&lt;p&gt;To prevent feedback loops, we track &lt;code&gt;last_received_attack[]&lt;/code&gt; -the raw flag as received from the network -and broadcast &lt;em&gt;that&lt;/em&gt;, not the lock-modified mobj state. Without this, attack animations would echo infinitely.&lt;/p&gt;

&lt;hr&gt;

&lt;h2 id=&#34;4-i-shot-you-no-you-didn-t-5&#34;&gt;4. &amp;#34;I Shot You!&amp;#34; &amp;#34;No You Didn&amp;#39;t!&amp;#34;&lt;/h2&gt;

&lt;h3 id=&#34;the-simple-version-3-5&#34;&gt;The Simple Version&lt;/h3&gt;

&lt;p&gt;In the original DOOM, every computer runs its own copy of the game physics. When you shoot someone, &lt;em&gt;your&lt;/em&gt; computer calculates the damage, and &lt;em&gt;their&lt;/em&gt; computer calculates the damage, and because the game is in lockstep, they always agree.&lt;/p&gt;

&lt;p&gt;With our real-time model, that guarantee vanishes -your screen and theirs might show slightly different positions. So we made one player (the host) the referee. When you shoot someone, you tell the host &lt;em&gt;&amp;#34;I hit Player 2 for 50 damage&amp;#34;&lt;/em&gt;. The host checks the physics, applies the damage if it&amp;#39;s valid, and announces the result to everyone. One truth, no arguments.&lt;/p&gt;

&lt;h3 id=&#34;the-nerdy-version-3-5&#34;&gt;The Nerdy Version&lt;/h3&gt;

&lt;p&gt;We implemented an &lt;strong&gt;event-based host-authority model&lt;/strong&gt; for all game-changing state:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Damage path:&lt;/strong&gt;&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;Client A fires weapon → bullet hits Player B locally
  → Client A sends DAMAGE_EVENT to host: {target: B, damage: 50, source: A}
  → Client A applies VISUAL FEEDBACK ONLY (screen flash, attacker tracking)
  → Client A does NOT reduce Player B&amp;#39;s health

Host receives DAMAGE_EVENT:
  → Sets damage_from_event = true (bypasses remote-source skip)
  → Calls P_DamageMobj() with full physics simulation
  → New health broadcasted via HEALTH_AUTH packet next snapshot cycle

All clients receive HEALTH_AUTH:
  → Apply as ground truth
  → Host says dead, client says alive? → P_KillMobj()
  → Host says alive, client says dead? → Trigger respawn
  → Health decreased? → Play pain animation
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The &lt;code&gt;damage_from_event&lt;/code&gt; flag is critical. Without it, the host faces a double-damage problem: it receives both the ticcmd attack (from the lockstep backbone) AND the explicit damage event. The flag ensures only the event path applies.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Other host-authoritative systems:&lt;/strong&gt;
- &lt;strong&gt;USE events&lt;/strong&gt;: Client presses &amp;#39;E&amp;#39; near a door → sends &lt;code&gt;USE_EVENT&lt;/code&gt; → host calls &lt;code&gt;P_UseLines()&lt;/code&gt; → door opens for everyone
- &lt;strong&gt;Respawns&lt;/strong&gt;: Client dies → sends &lt;code&gt;RESPAWN_REQUEST&lt;/code&gt; → host sets &lt;code&gt;playerstate = PST_REBORN&lt;/code&gt;
- &lt;strong&gt;Kill messages&lt;/strong&gt;: Host broadcasts &lt;code&gt;KILL_MSG&lt;/code&gt; when a player dies → displayed on all screens&lt;/p&gt;

&lt;hr&gt;

&lt;h2 id=&#34;5-making-monsters-agree-5&#34;&gt;5. Making Monsters Agree&lt;/h2&gt;

&lt;h3 id=&#34;the-simple-version-4-5&#34;&gt;The Simple Version&lt;/h3&gt;

&lt;p&gt;DOOM has dozens of monsters per level, each running their own AI -chasing you, shooting fireballs, infighting with each other. In the original game, every computer simulates every monster identically (because lockstep ensures they all see the same inputs). In our version, only the host simulates the monsters. Everyone else just sees the results -like watching a puppet show where only the puppeteer knows the script, but the audience sees the performance in real-time.&lt;/p&gt;

&lt;h3 id=&#34;the-nerdy-version-4-5&#34;&gt;The Nerdy Version&lt;/h3&gt;

&lt;p&gt;We built a full NPC synchronisation system (&lt;code&gt;p_netsync.c/h&lt;/code&gt;):&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Registry&lt;/strong&gt;: Every monster and barrel gets a unique &lt;code&gt;net_id&lt;/code&gt; via &lt;code&gt;P_NetAssignId()&lt;/code&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;mobj_t *net_mobj_table[MAX_NET_MOBJS];  // 512 slots
unsigned short net_id_counter;            // Sequential allocator
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;strong&gt;Host broadcasts&lt;/strong&gt; (every 2 tics) a compact binary snapshot:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;[npc_count: u8][gametic: u16]
Per NPC (20 bytes): net_id(2) x(4) y(4) z(4) angle(1) statenum(2) health(2) flags(1)
[sector_count: u8]
Per changed sector (10 bytes): sector_id(2) ceiling(4) floor(4)
[missile_count: u8]
Per missile (32 bytes): source_net_id(2) type(2) x(4) y(4) z(4) momx(4) momy(4) momz(4) angle(4)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;strong&gt;Client-side&lt;/strong&gt;: In &lt;code&gt;P_MobjThinker()&lt;/code&gt;, clients skip physics entirely for any mobj with &lt;code&gt;net_id &amp;gt; 0&lt;/code&gt;. Only the animation tic counter runs. State changes use &lt;code&gt;P_SetMobjStateNoAction()&lt;/code&gt; -which applies the visual state WITHOUT executing action functions. This prevents clients from independently spawning projectiles, running AI decisions, or playing duplicate sounds.&lt;/p&gt;

&lt;p&gt;The sector data keeps doors and lifts in sync. The missile data ensures fireballs and rockets appear on all screens.&lt;/p&gt;

&lt;hr&gt;

&lt;h2 id=&#34;6-room-for-one-more-mid-game-joining-5&#34;&gt;6. &amp;#34;Room for One More?&amp;#34; -Mid-Game Joining&lt;/h2&gt;

&lt;h3 id=&#34;the-simple-version-5-5&#34;&gt;The Simple Version&lt;/h3&gt;

&lt;p&gt;Original DOOM didn&amp;#39;t let you join a game already in progress. Everyone had to be there at the start, or too bad. Our version lets players drop in mid-game. You open the .xdc, the game finds the server, and you spawn in -even if everyone else is already knee-deep in the dead.&lt;/p&gt;

&lt;h3 id=&#34;the-nerdy-version-5-5&#34;&gt;The Nerdy Version&lt;/h3&gt;

&lt;p&gt;Late joining required solving several hairy problems:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tic synchronisation&lt;/strong&gt;: The late joiner&amp;#39;s tic counter is meaningless -they weren&amp;#39;t there for tics 0 through N. When the server accepts a late join, it sends &lt;code&gt;settings-&amp;gt;start_tic&lt;/code&gt; set to the current server tic. The client aligns its &lt;code&gt;recvtic&lt;/code&gt;, &lt;code&gt;maketic&lt;/code&gt;, and &lt;code&gt;gametic&lt;/code&gt; to this value, syncing the 8-bit tic sequence numbers with the server&amp;#39;s counter.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Double-slot bug&lt;/strong&gt;: We found that &lt;code&gt;NET_SV_AssignPlayers()&lt;/code&gt; could assign the new client to a slot that was already used, creating a ghost duplicate. The fix: &lt;code&gt;HandleLateJoin()&lt;/code&gt; explicitly clears any pre-existing slots for the new client before assigning a fresh one.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ghost body cleanup&lt;/strong&gt;: When a player disconnects and reconnects (or the quit/rejoin cycle fires), their old mobj lingers in the world as an invisible collision obstacle. &lt;code&gt;P_SpawnPlayer()&lt;/code&gt; now checks for and removes any existing mobj before spawning:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;if (p-&amp;gt;mo) {
    p-&amp;gt;mo-&amp;gt;player = NULL;
    P_RemoveMobj(p-&amp;gt;mo);
    p-&amp;gt;mo = NULL;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;strong&gt;Name propagation&lt;/strong&gt;: When a new player joins, every existing player re-broadcasts their name, so the joiner&amp;#39;s HUD displays the correct names instead of the defaults (&amp;#34;Green&amp;#34;, &amp;#34;Indigo&amp;#34;, &amp;#34;Brown&amp;#34;, &amp;#34;Red&amp;#34;).&lt;/p&gt;

&lt;hr&gt;

&lt;h2 id=&#34;7-fits-in-a-chat-message-5&#34;&gt;7. Fits in a Chat Message&lt;/h2&gt;

&lt;h3 id=&#34;the-simple-version-6-5&#34;&gt;The Simple Version&lt;/h3&gt;

&lt;p&gt;The entire game -engine, levels, monsters, weapons, networking, touch controls, gamepad support, all of it -fits in a &lt;strong&gt;4.2 megabyte file&lt;/strong&gt;. That&amp;#39;s smaller than most photos your phone takes. You send it in a chat message like you&amp;#39;d send a meme. Your friend taps it, and they&amp;#39;re in the game. No app store, no downloads, no accounts, no updates.&lt;/p&gt;

&lt;h3 id=&#34;the-nerdy-version-6-5&#34;&gt;The Nerdy Version&lt;/h3&gt;

&lt;p&gt;The .xdc format is just a ZIP archive with a different extension. Ours contains:&lt;/p&gt;

&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;File&lt;/th&gt;
&lt;th&gt;Size (compressed)&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;

&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;vector-doom.wasm&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;~2.7 MB&lt;/td&gt;
&lt;td&gt;Chocolate Doom engine (Emscripten, -O3)&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;code&gt;doom1.wad&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;~1.7 MB&lt;/td&gt;
&lt;td&gt;DOOM shareware levels (freely distributable)&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;code&gt;vector-doom.js&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;~160 KB&lt;/td&gt;
&lt;td&gt;Emscripten runtime (terser-minified, 58% reduction)&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;code&gt;index.html&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;~12 KB&lt;/td&gt;
&lt;td&gt;UI, touch controls, gamepad support, CRT visual theme&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;code&gt;webxdc-net.js&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;~3 KB&lt;/td&gt;
&lt;td&gt;Server election &#43; packet routing&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;code&gt;icon.png&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;~90 KB&lt;/td&gt;
&lt;td&gt;App icon&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;code&gt;bg.jpg&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;~100 KB&lt;/td&gt;
&lt;td&gt;Background artwork&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;code&gt;default.cfg&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;~2 KB&lt;/td&gt;
&lt;td&gt;Default key bindings&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;code&gt;manifest.toml&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;~100 B&lt;/td&gt;
&lt;td&gt;WebXDC metadata&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The WASM binary and WAD compress extremely well in ZIP (65% and 58% respectively), bringing the total to 4.2MB.&lt;/p&gt;

&lt;p&gt;The build pipeline:
1. Emscripten compiles Chocolate Doom &#43; our modifications to WASM (&lt;code&gt;emmake make -j4&lt;/code&gt;)
2. &lt;code&gt;webxdc-net.js&lt;/code&gt; is injected as &lt;code&gt;--pre-js&lt;/code&gt; (runs before WASM initialises)
3. JS is minified with terser in parallel
4. HTML is minified (strip comments, collapse whitespace)
5. Everything zipped at maximum compression (&lt;code&gt;zip -9&lt;/code&gt;)&lt;/p&gt;

&lt;p&gt;The game runs on any WebXDC-compatible messenger. We built it for &lt;a href=&#34;https://vector.im&#34;&gt;Vector&lt;/a&gt; (a Nostr-based messenger), but it works in &lt;a href=&#34;https://delta.chat/&#34;&gt;Delta Chat&lt;/a&gt; and potentially any app that implements the WebXDC standard.&lt;/p&gt;

&lt;hr&gt;

&lt;h2 id=&#34;the-full-stack-from-keypress-to-frag-5&#34;&gt;The Full Stack, From Keypress to Frag&lt;/h2&gt;

&lt;p&gt;Here&amp;#39;s what happens when you press the fire button on your phone:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;1. Your finger hits the Fire button (HTML touch event)
2. JavaScript calls Module._inject_key_event(0, 32)     // keydown, spacebar
3. DOOM&amp;#39;s event queue receives ev_keydown
4. D_ProcessEvents() → G_Responder() builds ticcmd with BT_ATTACK
5. TryRunTics() executes the tic -your weapon fires, P_LineAttack() traces a hitscan
6. Bullet hits Player 2 → P_DamageMobj() → instead of applying damage:
   → NET_CL_SendDamageEvent(target=2, damage=50, source=you)
7. Every 2 tics, your position snapshot broadcasts via realtimeChannel:
   → JS encodes [to(4)][from(4)][snapshot] → WebSocket → Iroh gossip → peer devices
8. Host receives damage event → validates → applies → broadcasts HEALTH_AUTH
9. Player 2&amp;#39;s screen: health drops, pain flash plays, kill message appears
10. Your screen: the host&amp;#39;s HEALTH_AUTH confirms the kill
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Total time from keypress to kill confirmation: roughly 100-200ms depending on network conditions. No servers touched. No corporation involved. Just two chat apps talking directly to each other.&lt;/p&gt;

&lt;hr&gt;

&lt;h2 id=&#34;standing-on-the-shoulders-of-giants-5&#34;&gt;Standing on the Shoulders of Giants&lt;/h2&gt;

&lt;p&gt;None of this would exist without:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;https://www.idsoftware.com/&#34;&gt;id Software&lt;/a&gt;&lt;/strong&gt; for open-sourcing the DOOM engine in 1997 -a decision that created an entire modding ecosystem and directly enabled everything described here&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;https://www.chocolate-doom.org/&#34;&gt;Chocolate Doom&lt;/a&gt;&lt;/strong&gt; for faithfully recreating the original engine in portable, hackable C&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;https://blog.cloudflare.com/doom-multiplayer-workers/&#34;&gt;Cloudflare&lt;/a&gt;&lt;/strong&gt; for proving DOOM-in-WebAssembly was viable and open-sourcing their &lt;a href=&#34;https://github.com/cloudflare/doom-wasm&#34;&gt;doom-wasm&lt;/a&gt; port -the foundation we forked&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;https://emscripten.org/&#34;&gt;Emscripten&lt;/a&gt;&lt;/strong&gt; for making C-to-WASM compilation actually work&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;https://iroh.computer/&#34;&gt;Iroh&lt;/a&gt;&lt;/strong&gt; (by n0.computer) for the QUIC-based P2P gossip protocol that makes serverless real-time gaming possible&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The &lt;a href=&#34;https://webxdc.org/&#34;&gt;WebXDC&lt;/a&gt; community&lt;/strong&gt; for defining an open standard for sandboxed web apps in chat messages&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And a special note: the networking architecture of Open Source DOOM was designed and implemented as a collaboration between a human developer and an AI (&lt;a href=&#34;https://claude.ai&#34;&gt;Claude&lt;/a&gt;, by Anthropic). Not generated and pasted -&lt;em&gt;collaborated on.&lt;/em&gt; Hundreds of iterations, debugging sessions at 3am with hex dumps of gossip packets, heated debates about whether to interpolate angles (don&amp;#39;t), and moments of genuine surprise when things just... worked.&lt;/p&gt;

&lt;hr&gt;

&lt;h2 id=&#34;try-it-5&#34;&gt;Try It&lt;/h2&gt;

&lt;p&gt;Open-Source DOOM is free, open-source, and available today.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://image.nostr.build/90497863e88cc21741a1493be081716f5af3664eced7fbdb063c8f783df534fd.jpg&#34; alt=&#34;image&#34;/&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Play it&lt;/strong&gt;: Download &lt;a href=&#34;https://vectorapp.io&#34;&gt;Vector&lt;/a&gt;, open &lt;strong&gt;Vector Nexus&lt;/strong&gt; (our decentralised in-app Mini App store), and find &lt;strong&gt;DOOM&lt;/strong&gt; in the Multiplayer category. Send it to a friend or group chat and start fragging - no manual file management needed.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://image.nostr.build/149d09299e73fe56d904f9116b67c22b67935d36b4e263f346d7a179bac605b7.jpg&#34; alt=&#34;image&#34;/&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Read the code&lt;/strong&gt;: The full source is available at &lt;a href=&#34;https://github.com/VectorPrivacy/DOOM&#34;&gt;github.com/nicholasopuni31/doom-wasm&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Build on it&lt;/strong&gt;: The WebXDC realtime channel pattern we developed here works for any real-time multiplayer game.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;If DOOM is &amp;#34;Hello, World&amp;#34; for computing, then Open Source DOOM is &amp;#34;Hello, World&amp;#34; for decentralised gaming.&lt;/em&gt;&lt;/p&gt;

&lt;hr&gt;

&lt;p&gt;&lt;em&gt;Published March 2026. Written by&lt;/em&gt; &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub16ye7evyevwnl0fc9hujsxf9zym72e063awn0pvde0huvpyec5nyq4dg4wn&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;JSKitty&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub16ye…g4wn&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
 &lt;/blockquote&gt;
    </content>
    <updated>2026-03-20T13:15:12Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqstjtdt087wxf2e25fey87cunqsq3tgkklgfwqg0hy4c9knjta7twczyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg68d63va</id>
    
      <title type="html">Yes sir, your eyes do not deceive you. ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqstjtdt087wxf2e25fey87cunqsq3tgkklgfwqg0hy4c9knjta7twczyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg68d63va" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs2rfa20ytfq88c46w4ywa48p9kkngzsj2wswwjeajvhn7drqph9jgt5dvkq&#39;&gt;nevent1q…dvkq&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Yes sir, your eyes do not deceive you.&lt;br/&gt;&lt;br/&gt; &lt;img src=&#34;https://image.nostr.build/2768aba5d0e616d626f7877966feec7e7f3c5822a552e5320305c635a8c58697.jpg&#34;&gt; 
    </content>
    <updated>2026-03-19T12:35:57Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqswh3kwd3rtuy5y35yl7dmmfct488sq84tptchvlvw45gygv8rt0dqzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg65ewzv5</id>
    
      <title type="html">and 2026 is still beginning!</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqswh3kwd3rtuy5y35yl7dmmfct488sq84tptchvlvw45gygv8rt0dqzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg65ewzv5" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs80dn6f23306ka0pccyy3ry8z82stgazyu2w4sfhkru29v8a8jydsyd4d3c&#39;&gt;nevent1q…4d3c&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;and 2026 is still beginning!
    </content>
    <updated>2026-03-19T10:49:51Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs99r30mn88el6wnvqvmc4ts78d3q0k230r4udrq73ycm64023c87szyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6cj5349</id>
    
      <title type="html">Should we start hosting some Game Nights on Nostr? ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs99r30mn88el6wnvqvmc4ts78d3q0k230r4udrq73ycm64023c87szyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6cj5349" />
    <content type="html">
      Should we start hosting some Game Nights on Nostr?&lt;blockquote class=&#34;border-l-05rem border-l-strongpink border-solid&#34;&gt;&lt;div class=&#34;-ml-4 bg-gradient-to-r from-gray-100 dark:from-zinc-800 to-transparent mr-0 mt-0 mb-4 pl-4 pr-2 py-2&#34;&gt;quoting  &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Article&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/naddr1qvzqqqr4gupzpw8e9es7w829s6hxle5hpaea6r7m3yqsjky79aqhhm6ytwa6jtydqq2ng66wwpckw4t60f49q3m3gddyknf4d4mrxhqars5&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;naddr1qv…ars5&lt;/a&gt;&lt;/span&gt; &lt;/div&gt; 
&lt;h1 id=&#34;open-source-doom-how-we-brought-real-time-multiplayer-to-a-1993-classic-no-servers-required-8&#34;&gt;Open-Source DOOM: How We Brought Real-Time Multiplayer to a 1993 Classic. No Servers Required.&lt;/h1&gt;

&lt;p&gt;A Breakthrough in Decentralized Gaming by &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub16ye7evyevwnl0fc9hujsxf9zym72e063awn0pvde0huvpyec5nyq4dg4wn&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;JSKitty&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub16ye…g4wn&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;

&lt;hr&gt;

&lt;p&gt;In May 2021, Cloudflare did something wonderful. They took DOOM -the 1993 game that defined an entire genre -compiled it to WebAssembly, wired up WebSocket multiplayer through their Durable Objects edge platform, and &lt;a href=&#34;https://blog.cloudflare.com/doom-multiplayer-workers/&#34;&gt;wrote a fantastic blog post about it&lt;/a&gt;. As Celso Martinho put it: &lt;em&gt;&amp;#34;Running Doom is effectively the new &amp;#39;Hello, World&amp;#39; in computing.&amp;#34;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;We loved it. And then we thought: &lt;em&gt;what if we could take it further?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;What if multiplayer DOOM didn&amp;#39;t need Cloudflare&amp;#39;s servers -or anyone&amp;#39;s servers? What if it didn&amp;#39;t need the internet at all? What if you could send a 4MB file to a friend in a chat message and be fragging each other within seconds, purely peer-to-peer, with the game feeling like a modern real-time shooter instead of a 1994 LAN party?&lt;/p&gt;

&lt;p&gt;That&amp;#39;s what we built. We call it &lt;strong&gt;Open-Source DOOM&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It&amp;#39;s powered by a stack of open technologies: &lt;a href=&#34;https://www.chocolate-doom.org/&#34;&gt;Chocolate Doom&lt;/a&gt; compiled to &lt;a href=&#34;https://webassembly.org/&#34;&gt;WebAssembly&lt;/a&gt; via &lt;a href=&#34;https://emscripten.org/&#34;&gt;Emscripten&lt;/a&gt;, distributed as a &lt;a href=&#34;https://webxdc.org/&#34;&gt;WebXDC&lt;/a&gt; mini-app, with peer discovery over &lt;a href=&#34;https://nostr.com/&#34;&gt;Nostr&lt;/a&gt;, end-to-end encryption via &lt;a href=&#34;https://github.com/parres-hq/mdk&#34;&gt;Marmot&lt;/a&gt; (MLS over Nostr), and real-time P2P data transport through &lt;a href=&#34;https://iroh.computer/&#34;&gt;Iroh&lt;/a&gt; (QUIC-based gossip). Every layer is open-source. Every packet is encrypted. No servers required.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://image.nostr.build/2768aba5d0e616d626f7877966feec7e7f3c5822a552e5320305c635a8c58697.jpg&#34; alt=&#34;image&#34;/&gt;&lt;/p&gt;

&lt;hr&gt;

&lt;h2 id=&#34;what-cloudflare-built-and-why-it-s-great-8&#34;&gt;What Cloudflare Built (And Why It&amp;#39;s Great)&lt;/h2&gt;

&lt;p&gt;Credit where it&amp;#39;s due. Cloudflare&amp;#39;s &lt;a href=&#34;https://github.com/cloudflare/doom-wasm&#34;&gt;doom-wasm&lt;/a&gt; project did the hard work of porting Chocolate Doom -&amp;gt; the faithful open-source recreation of the original DOOM engine -&amp;gt; to WebAssembly using Emscripten. That alone is a serious engineering effort. They then wrote &lt;code&gt;net_websockets.c&lt;/code&gt;, a transport adapter that replaced DOOM&amp;#39;s original IPX/UDP networking with WebSocket connections routed through Durable Objects on Cloudflare&amp;#39;s edge network.&lt;/p&gt;

&lt;p&gt;Their architecture looked like this:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;Player A (Browser)  ←WebSocket→  Cloudflare Edge (Durable Object)  ←WebSocket→  Player B (Browser)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;A Durable Object acted as the game room -maintaining a routing table of connected players and forwarding packets between them. Clean, elegant, and a great demo of edge computing.&lt;/p&gt;

&lt;p&gt;But there was a catch.&lt;/p&gt;

&lt;h3 id=&#34;what-they-kept-the-same-8&#34;&gt;What they kept the same&lt;/h3&gt;

&lt;p&gt;Cloudflare didn&amp;#39;t modify DOOM&amp;#39;s actual netcode. The game still used its original &lt;strong&gt;lockstep networking&lt;/strong&gt; model from 1993 -the same protocol designed for four PCs on a local area network connected by coaxial cable. Every player sends their inputs (which keys they pressed) to every other player, every single frame, and &lt;strong&gt;the game freezes until everyone&amp;#39;s inputs arrive&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;As their blog post acknowledged: &lt;em&gt;&amp;#34;The game only advances when everyone receives the commands from all the other players in the group.&amp;#34;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This worked in 1993 when your LAN had sub-millisecond latency. Over the internet, through WebSockets, through a routing layer? It meant choppy gameplay, freezes whenever anyone&amp;#39;s connection hiccupped, and a gameplay experience that felt more like a slideshow than a shooter.&lt;/p&gt;

&lt;p&gt;The Durable Object was also a single point of failure and a centralised dependency. No Cloudflare, no DOOM.&lt;/p&gt;

&lt;hr&gt;

&lt;h2 id=&#34;what-we-changed-everything-except-the-game-itself-8&#34;&gt;What We Changed (Everything Except the Game Itself)&lt;/h2&gt;

&lt;p&gt;We forked Cloudflare&amp;#39;s doom-wasm project and rebuilt the entire networking stack from scratch. Not just the transport layer -the fundamental model of how the game synchronises state between players.&lt;/p&gt;

&lt;p&gt;Here&amp;#39;s the before and after:&lt;/p&gt;

&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Cloudflare&amp;#39;s DOOM&lt;/th&gt;
&lt;th&gt;Open Source DOOM&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;

&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Transport&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;WebSockets → Cloudflare Edge&lt;/td&gt;
&lt;td&gt;P2P gossip via Iroh (QUIC)&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Server&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Durable Object (centralised)&lt;/td&gt;
&lt;td&gt;Auto-elected from players (decentralised)&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Sync model&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Lockstep (1993 original)&lt;/td&gt;
&lt;td&gt;Real-time hybrid (snapshots &#43; interpolation)&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Damage&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Simulated locally by all clients&lt;/td&gt;
&lt;td&gt;Host-authoritative events&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;NPCs/Monsters&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Simulated locally by all clients&lt;/td&gt;
&lt;td&gt;Host-authoritative snapshots&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Late join&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Not supported&lt;/td&gt;
&lt;td&gt;Fully supported&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Internet required&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Yes (Cloudflare Workers)&lt;/td&gt;
&lt;td&gt;No (works offline, P2P)&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Delivery&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Website (silentspacemarine.com)&lt;/td&gt;
&lt;td&gt;4.2MB file in a chat message&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Let&amp;#39;s break down each piece.&lt;/p&gt;

&lt;hr&gt;

&lt;h2 id=&#34;1-no-servers-no-problem-8&#34;&gt;1. No Servers, No Problem&lt;/h2&gt;

&lt;h3 id=&#34;the-simple-version-1-15&#34;&gt;The Simple Version&lt;/h3&gt;

&lt;p&gt;Cloudflare&amp;#39;s DOOM needed their servers to work. Ours doesn&amp;#39;t need &lt;em&gt;any&lt;/em&gt; servers. When you open the game, your device automatically figures out who should be the &amp;#34;host&amp;#34; --no configuration, no IP addresses, no port forwarding, no sign-ups. It just works.&lt;/p&gt;

&lt;p&gt;The game runs inside a &lt;strong&gt;.xdc file&lt;/strong&gt;, essentially a tiny 4.2MB zip archive containing the entire game. You literally send it as a file in a chat message. Your friend opens it. You&amp;#39;re playing DOOM together. The data travels directly between your devices through the chat app&amp;#39;s peer-to-peer channels.&lt;/p&gt;

&lt;h3 id=&#34;the-nerdy-version-1-15&#34;&gt;The Nerdy Version&lt;/h3&gt;

&lt;p&gt;We replaced &lt;code&gt;net_websockets.c&lt;/code&gt; with &lt;code&gt;net_webxdc.c&lt;/code&gt; -a transport module that speaks the &lt;a href=&#34;https://webxdc.org/&#34;&gt;WebXDC&lt;/a&gt; realtime channel protocol instead of WebSockets.&lt;/p&gt;

&lt;p&gt;WebXDC is an open standard for sandboxed web apps distributed inside chat messages. The app has &lt;strong&gt;zero internet access&lt;/strong&gt;, no fetch, no XMLHttpRequest, nothing. The only communication channel is &lt;code&gt;webxdc.joinRealtimeChannel()&lt;/code&gt;, which gives you an unreliable broadcast pipe to other instances of the same .xdc file in the same chat.&lt;/p&gt;

&lt;p&gt;Under the hood (in our primary platform, &lt;a href=&#34;https://github.com/nicholasopuni31/vector&#34;&gt;Vector&lt;/a&gt;), this channel is backed by &lt;a href=&#34;https://iroh.computer/&#34;&gt;Iroh&lt;/a&gt;, a QUIC-based peer-to-peer gossip protocol. Messages travel directly between devices, relayed through lightweight Iroh relay nodes only when direct connections aren&amp;#39;t possible. There are no game servers, no routing tables, no Durable Objects.&lt;/p&gt;

&lt;p&gt;Peer discovery happens over &lt;a href=&#34;https://nostr.com/&#34;&gt;Nostr&lt;/a&gt;, the decentralised social protocol. When you open a game, your Iroh node address is published as a Nostr event so other players can find you and establish a direct connection. The connection itself is encrypted end-to-end via &lt;a href=&#34;https://github.com/parres-hq/mdk&#34;&gt;Marmot&lt;/a&gt;, which implements the &lt;a href=&#34;https://messaginglayersecurity.rocks/&#34;&gt;MLS&lt;/a&gt; (Messaging Layer Security) protocol over Nostr. So every packet of DOOM multiplayer data, every position snapshot, every damage event, every frag, is encrypted with forward secrecy before it ever leaves your device.&lt;/p&gt;

&lt;p&gt;The wire format is minimal:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;[to: uint32 LE (4 bytes)][from: uint32 LE (4 bytes)][doom_payload]
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;JavaScript routes incoming packets by destination UID -only packets addressed to you (or broadcast address &lt;code&gt;0&lt;/code&gt;) get delivered to the WASM engine. Everything else is silently dropped.&lt;/p&gt;

&lt;p&gt;For performance, Vector provides a &lt;strong&gt;WebSocket fast-path&lt;/strong&gt;: the app connects to &lt;code&gt;ws://127.0.0.1:{random_port}/{token}&lt;/code&gt; -a localhost WebSocket server spun up by the Rust backend -giving near-zero-latency access to the Iroh gossip sender. Binary frames go straight to &lt;code&gt;sender.broadcast()&lt;/code&gt; with zero copies. Fallback path uses Tauri invoke with base91 encoding.&lt;/p&gt;

&lt;hr&gt;

&lt;h2 id=&#34;2-who-s-the-server-magic-8&#34;&gt;2. Who&amp;#39;s the Server? Magic.&lt;/h2&gt;

&lt;h3 id=&#34;the-simple-version-1-16&#34;&gt;The Simple Version&lt;/h3&gt;

&lt;p&gt;In a normal online game, someone runs a server, and everyone connects to it. In Open Source DOOM, there &lt;em&gt;is&lt;/em&gt; no predetermined server. When you open the game, all players silently negotiate who becomes the host. The person who opened the game first wins. This happens automatically in about three seconds, and you never even notice it.&lt;/p&gt;

&lt;h3 id=&#34;the-nerdy-version-1-16&#34;&gt;The Nerdy Version&lt;/h3&gt;

&lt;p&gt;Server election uses a dead-simple timestamp protocol over the broadcast channel:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Every instance broadcasts &lt;strong&gt;4 magic bytes&lt;/strong&gt; (&lt;code&gt;[42, 42, 42, 42]&lt;/code&gt;) every 300ms: &lt;em&gt;&amp;#34;I exist, who&amp;#39;s the server?&amp;#34;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Every instance responds to discovery requests with: &lt;code&gt;[43, 43, 43, 43][padding(4)][timestamp(8)]&lt;/code&gt; -where timestamp is &lt;code&gt;Date.now()&lt;/code&gt; from when the app first opened&lt;/li&gt;
&lt;li&gt;The instance with the &lt;strong&gt;earliest timestamp&lt;/strong&gt; wins&lt;/li&gt;
&lt;li&gt;After 3 seconds with no earlier challenger, you declare yourself server&lt;/li&gt;
&lt;li&gt;The elected server re-broadcasts its beacon every 3 seconds so late-joiners can discover it&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The server gets &lt;code&gt;instanceUID = 1&lt;/code&gt; (hardcoded). Clients get a random UID in &lt;code&gt;1–65534&lt;/code&gt;. This UID becomes their network address for the entire session -no DNS, no IP addresses, no NAT traversal headaches.&lt;/p&gt;

&lt;p&gt;The whole election algorithm is about 80 lines of JavaScript. It works over any broadcast transport. No configuration needed.&lt;/p&gt;

&lt;hr&gt;

&lt;h2 id=&#34;3-from-lockstep-to-real-time-the-big-one-8&#34;&gt;3. From Lockstep to Real-Time (The Big One)&lt;/h2&gt;

&lt;h3 id=&#34;the-simple-version-2-8&#34;&gt;The Simple Version&lt;/h3&gt;

&lt;p&gt;Original DOOM multiplayer works like a group of people writing a letter round-robin. Nobody can write their next line until everyone has received and read the previous line. If one person is slow, &lt;em&gt;everyone&lt;/em&gt; waits.&lt;/p&gt;

&lt;p&gt;We changed it to work more like a live conversation. Everyone talks at their own pace. If you miss a word, you can still follow along because the speaker periodically summarises where things stand. The result feels like a modern shooter -smooth movement, responsive controls, no freezing.&lt;/p&gt;

&lt;h3 id=&#34;the-nerdy-version-2-8&#34;&gt;The Nerdy Version&lt;/h3&gt;

&lt;p&gt;This was the most fundamental change: replacing DOOM&amp;#39;s pure lockstep synchronisation with a &lt;strong&gt;hybrid real-time model&lt;/strong&gt;. The ticcmd backbone remains (it&amp;#39;s too deeply embedded in Chocolate Doom&amp;#39;s deterministic physics to remove), but we layered three correction systems on top:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;a) Position Snapshots &#43; Exponential Smoothing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Every 2 tics (~57ms at 35 FPS), each player broadcasts a snapshot of their state:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;int data[9] = {
    mo-&amp;gt;x, mo-&amp;gt;y, mo-&amp;gt;z,        // World position (fixed-point)
    mo-&amp;gt;angle,                    // Facing direction
    mo-&amp;gt;momx, mo-&amp;gt;momy, mo-&amp;gt;momz, // Velocity
    attack_weapon,                // 0=idle, 1-9=attacking with weapon N
    latency                       // Round-trip time (ms)
};
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Remote players don&amp;#39;t run DOOM&amp;#39;s physics engine at all. Instead, &lt;code&gt;D_TickPlayerInterp()&lt;/code&gt; runs every tic:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Extrapolate&lt;/strong&gt; the target forward using stored momentum: &lt;code&gt;target_x &#43;= momx&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Smooth&lt;/strong&gt; toward the target, closing 60% of the remaining gap each tic:

&lt;pre&gt;&lt;code&gt;
#define INTERP_FRAC  39322  // 0.6 * 65536 (fixed-point)
mo-&amp;gt;x &#43;= FixedMul(target_x - mo-&amp;gt;x, INTERP_FRAC);
mo-&amp;gt;y &#43;= FixedMul(target_y - mo-&amp;gt;y, INTERP_FRAC);
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Teleport detection&lt;/strong&gt;: if the delta exceeds 128 map units, snap instantly (player respawned or hit a teleporter)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;One subtle but critical detail: &lt;strong&gt;angle is NOT interpolated&lt;/strong&gt;. The ticcmd&amp;#39;s &lt;code&gt;angleturn&lt;/code&gt; field is applied deterministically by &lt;code&gt;P_MovePlayer()&lt;/code&gt; and stays in sync across machines. Interpolating angle toward a stale snapshot would &lt;em&gt;fight&lt;/em&gt; the ticcmd, causing visible rotation jitter of up to 90 degrees. We learned this the hard way.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;b) Attack Animation Sync&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Remote players&amp;#39; attacks are driven by snapshot data, not ticcmds. When a snapshot reports &lt;code&gt;attack_weapon &amp;gt; 0&lt;/code&gt;, we set the &lt;code&gt;S_PLAY_ATK1&lt;/code&gt; animation state and play the weapon fire sound. An 8-tic animation lock prevents local state transitions from overriding it.&lt;/p&gt;

&lt;p&gt;To prevent feedback loops, we track &lt;code&gt;last_received_attack[]&lt;/code&gt; -the raw flag as received from the network -and broadcast &lt;em&gt;that&lt;/em&gt;, not the lock-modified mobj state. Without this, attack animations would echo infinitely.&lt;/p&gt;

&lt;hr&gt;

&lt;h2 id=&#34;4-i-shot-you-no-you-didn-t-8&#34;&gt;4. &amp;#34;I Shot You!&amp;#34; &amp;#34;No You Didn&amp;#39;t!&amp;#34;&lt;/h2&gt;

&lt;h3 id=&#34;the-simple-version-3-8&#34;&gt;The Simple Version&lt;/h3&gt;

&lt;p&gt;In the original DOOM, every computer runs its own copy of the game physics. When you shoot someone, &lt;em&gt;your&lt;/em&gt; computer calculates the damage, and &lt;em&gt;their&lt;/em&gt; computer calculates the damage, and because the game is in lockstep, they always agree.&lt;/p&gt;

&lt;p&gt;With our real-time model, that guarantee vanishes -your screen and theirs might show slightly different positions. So we made one player (the host) the referee. When you shoot someone, you tell the host &lt;em&gt;&amp;#34;I hit Player 2 for 50 damage&amp;#34;&lt;/em&gt;. The host checks the physics, applies the damage if it&amp;#39;s valid, and announces the result to everyone. One truth, no arguments.&lt;/p&gt;

&lt;h3 id=&#34;the-nerdy-version-3-8&#34;&gt;The Nerdy Version&lt;/h3&gt;

&lt;p&gt;We implemented an &lt;strong&gt;event-based host-authority model&lt;/strong&gt; for all game-changing state:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Damage path:&lt;/strong&gt;&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;Client A fires weapon → bullet hits Player B locally
  → Client A sends DAMAGE_EVENT to host: {target: B, damage: 50, source: A}
  → Client A applies VISUAL FEEDBACK ONLY (screen flash, attacker tracking)
  → Client A does NOT reduce Player B&amp;#39;s health

Host receives DAMAGE_EVENT:
  → Sets damage_from_event = true (bypasses remote-source skip)
  → Calls P_DamageMobj() with full physics simulation
  → New health broadcasted via HEALTH_AUTH packet next snapshot cycle

All clients receive HEALTH_AUTH:
  → Apply as ground truth
  → Host says dead, client says alive? → P_KillMobj()
  → Host says alive, client says dead? → Trigger respawn
  → Health decreased? → Play pain animation
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The &lt;code&gt;damage_from_event&lt;/code&gt; flag is critical. Without it, the host faces a double-damage problem: it receives both the ticcmd attack (from the lockstep backbone) AND the explicit damage event. The flag ensures only the event path applies.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Other host-authoritative systems:&lt;/strong&gt;
- &lt;strong&gt;USE events&lt;/strong&gt;: Client presses &amp;#39;E&amp;#39; near a door → sends &lt;code&gt;USE_EVENT&lt;/code&gt; → host calls &lt;code&gt;P_UseLines()&lt;/code&gt; → door opens for everyone
- &lt;strong&gt;Respawns&lt;/strong&gt;: Client dies → sends &lt;code&gt;RESPAWN_REQUEST&lt;/code&gt; → host sets &lt;code&gt;playerstate = PST_REBORN&lt;/code&gt;
- &lt;strong&gt;Kill messages&lt;/strong&gt;: Host broadcasts &lt;code&gt;KILL_MSG&lt;/code&gt; when a player dies → displayed on all screens&lt;/p&gt;

&lt;hr&gt;

&lt;h2 id=&#34;5-making-monsters-agree-8&#34;&gt;5. Making Monsters Agree&lt;/h2&gt;

&lt;h3 id=&#34;the-simple-version-4-8&#34;&gt;The Simple Version&lt;/h3&gt;

&lt;p&gt;DOOM has dozens of monsters per level, each running their own AI -chasing you, shooting fireballs, infighting with each other. In the original game, every computer simulates every monster identically (because lockstep ensures they all see the same inputs). In our version, only the host simulates the monsters. Everyone else just sees the results -like watching a puppet show where only the puppeteer knows the script, but the audience sees the performance in real-time.&lt;/p&gt;

&lt;h3 id=&#34;the-nerdy-version-4-8&#34;&gt;The Nerdy Version&lt;/h3&gt;

&lt;p&gt;We built a full NPC synchronisation system (&lt;code&gt;p_netsync.c/h&lt;/code&gt;):&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Registry&lt;/strong&gt;: Every monster and barrel gets a unique &lt;code&gt;net_id&lt;/code&gt; via &lt;code&gt;P_NetAssignId()&lt;/code&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;mobj_t *net_mobj_table[MAX_NET_MOBJS];  // 512 slots
unsigned short net_id_counter;            // Sequential allocator
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;strong&gt;Host broadcasts&lt;/strong&gt; (every 2 tics) a compact binary snapshot:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;[npc_count: u8][gametic: u16]
Per NPC (20 bytes): net_id(2) x(4) y(4) z(4) angle(1) statenum(2) health(2) flags(1)
[sector_count: u8]
Per changed sector (10 bytes): sector_id(2) ceiling(4) floor(4)
[missile_count: u8]
Per missile (32 bytes): source_net_id(2) type(2) x(4) y(4) z(4) momx(4) momy(4) momz(4) angle(4)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;strong&gt;Client-side&lt;/strong&gt;: In &lt;code&gt;P_MobjThinker()&lt;/code&gt;, clients skip physics entirely for any mobj with &lt;code&gt;net_id &amp;gt; 0&lt;/code&gt;. Only the animation tic counter runs. State changes use &lt;code&gt;P_SetMobjStateNoAction()&lt;/code&gt; -which applies the visual state WITHOUT executing action functions. This prevents clients from independently spawning projectiles, running AI decisions, or playing duplicate sounds.&lt;/p&gt;

&lt;p&gt;The sector data keeps doors and lifts in sync. The missile data ensures fireballs and rockets appear on all screens.&lt;/p&gt;

&lt;hr&gt;

&lt;h2 id=&#34;6-room-for-one-more-mid-game-joining-8&#34;&gt;6. &amp;#34;Room for One More?&amp;#34; -Mid-Game Joining&lt;/h2&gt;

&lt;h3 id=&#34;the-simple-version-5-8&#34;&gt;The Simple Version&lt;/h3&gt;

&lt;p&gt;Original DOOM didn&amp;#39;t let you join a game already in progress. Everyone had to be there at the start, or too bad. Our version lets players drop in mid-game. You open the .xdc, the game finds the server, and you spawn in -even if everyone else is already knee-deep in the dead.&lt;/p&gt;

&lt;h3 id=&#34;the-nerdy-version-5-8&#34;&gt;The Nerdy Version&lt;/h3&gt;

&lt;p&gt;Late joining required solving several hairy problems:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tic synchronisation&lt;/strong&gt;: The late joiner&amp;#39;s tic counter is meaningless -they weren&amp;#39;t there for tics 0 through N. When the server accepts a late join, it sends &lt;code&gt;settings-&amp;gt;start_tic&lt;/code&gt; set to the current server tic. The client aligns its &lt;code&gt;recvtic&lt;/code&gt;, &lt;code&gt;maketic&lt;/code&gt;, and &lt;code&gt;gametic&lt;/code&gt; to this value, syncing the 8-bit tic sequence numbers with the server&amp;#39;s counter.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Double-slot bug&lt;/strong&gt;: We found that &lt;code&gt;NET_SV_AssignPlayers()&lt;/code&gt; could assign the new client to a slot that was already used, creating a ghost duplicate. The fix: &lt;code&gt;HandleLateJoin()&lt;/code&gt; explicitly clears any pre-existing slots for the new client before assigning a fresh one.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ghost body cleanup&lt;/strong&gt;: When a player disconnects and reconnects (or the quit/rejoin cycle fires), their old mobj lingers in the world as an invisible collision obstacle. &lt;code&gt;P_SpawnPlayer()&lt;/code&gt; now checks for and removes any existing mobj before spawning:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;if (p-&amp;gt;mo) {
    p-&amp;gt;mo-&amp;gt;player = NULL;
    P_RemoveMobj(p-&amp;gt;mo);
    p-&amp;gt;mo = NULL;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;strong&gt;Name propagation&lt;/strong&gt;: When a new player joins, every existing player re-broadcasts their name, so the joiner&amp;#39;s HUD displays the correct names instead of the defaults (&amp;#34;Green&amp;#34;, &amp;#34;Indigo&amp;#34;, &amp;#34;Brown&amp;#34;, &amp;#34;Red&amp;#34;).&lt;/p&gt;

&lt;hr&gt;

&lt;h2 id=&#34;7-fits-in-a-chat-message-8&#34;&gt;7. Fits in a Chat Message&lt;/h2&gt;

&lt;h3 id=&#34;the-simple-version-6-8&#34;&gt;The Simple Version&lt;/h3&gt;

&lt;p&gt;The entire game -engine, levels, monsters, weapons, networking, touch controls, gamepad support, all of it -fits in a &lt;strong&gt;4.2 megabyte file&lt;/strong&gt;. That&amp;#39;s smaller than most photos your phone takes. You send it in a chat message like you&amp;#39;d send a meme. Your friend taps it, and they&amp;#39;re in the game. No app store, no downloads, no accounts, no updates.&lt;/p&gt;

&lt;h3 id=&#34;the-nerdy-version-6-8&#34;&gt;The Nerdy Version&lt;/h3&gt;

&lt;p&gt;The .xdc format is just a ZIP archive with a different extension. Ours contains:&lt;/p&gt;

&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;File&lt;/th&gt;
&lt;th&gt;Size (compressed)&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;

&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;vector-doom.wasm&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;~2.7 MB&lt;/td&gt;
&lt;td&gt;Chocolate Doom engine (Emscripten, -O3)&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;code&gt;doom1.wad&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;~1.7 MB&lt;/td&gt;
&lt;td&gt;DOOM shareware levels (freely distributable)&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;code&gt;vector-doom.js&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;~160 KB&lt;/td&gt;
&lt;td&gt;Emscripten runtime (terser-minified, 58% reduction)&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;code&gt;index.html&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;~12 KB&lt;/td&gt;
&lt;td&gt;UI, touch controls, gamepad support, CRT visual theme&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;code&gt;webxdc-net.js&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;~3 KB&lt;/td&gt;
&lt;td&gt;Server election &#43; packet routing&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;code&gt;icon.png&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;~90 KB&lt;/td&gt;
&lt;td&gt;App icon&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;code&gt;bg.jpg&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;~100 KB&lt;/td&gt;
&lt;td&gt;Background artwork&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;code&gt;default.cfg&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;~2 KB&lt;/td&gt;
&lt;td&gt;Default key bindings&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;code&gt;manifest.toml&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;~100 B&lt;/td&gt;
&lt;td&gt;WebXDC metadata&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The WASM binary and WAD compress extremely well in ZIP (65% and 58% respectively), bringing the total to 4.2MB.&lt;/p&gt;

&lt;p&gt;The build pipeline:
1. Emscripten compiles Chocolate Doom &#43; our modifications to WASM (&lt;code&gt;emmake make -j4&lt;/code&gt;)
2. &lt;code&gt;webxdc-net.js&lt;/code&gt; is injected as &lt;code&gt;--pre-js&lt;/code&gt; (runs before WASM initialises)
3. JS is minified with terser in parallel
4. HTML is minified (strip comments, collapse whitespace)
5. Everything zipped at maximum compression (&lt;code&gt;zip -9&lt;/code&gt;)&lt;/p&gt;

&lt;p&gt;The game runs on any WebXDC-compatible messenger. We built it for &lt;a href=&#34;https://vector.im&#34;&gt;Vector&lt;/a&gt; (a Nostr-based messenger), but it works in &lt;a href=&#34;https://delta.chat/&#34;&gt;Delta Chat&lt;/a&gt; and potentially any app that implements the WebXDC standard.&lt;/p&gt;

&lt;hr&gt;

&lt;h2 id=&#34;the-full-stack-from-keypress-to-frag-8&#34;&gt;The Full Stack, From Keypress to Frag&lt;/h2&gt;

&lt;p&gt;Here&amp;#39;s what happens when you press the fire button on your phone:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;1. Your finger hits the Fire button (HTML touch event)
2. JavaScript calls Module._inject_key_event(0, 32)     // keydown, spacebar
3. DOOM&amp;#39;s event queue receives ev_keydown
4. D_ProcessEvents() → G_Responder() builds ticcmd with BT_ATTACK
5. TryRunTics() executes the tic -your weapon fires, P_LineAttack() traces a hitscan
6. Bullet hits Player 2 → P_DamageMobj() → instead of applying damage:
   → NET_CL_SendDamageEvent(target=2, damage=50, source=you)
7. Every 2 tics, your position snapshot broadcasts via realtimeChannel:
   → JS encodes [to(4)][from(4)][snapshot] → WebSocket → Iroh gossip → peer devices
8. Host receives damage event → validates → applies → broadcasts HEALTH_AUTH
9. Player 2&amp;#39;s screen: health drops, pain flash plays, kill message appears
10. Your screen: the host&amp;#39;s HEALTH_AUTH confirms the kill
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Total time from keypress to kill confirmation: roughly 100-200ms depending on network conditions. No servers touched. No corporation involved. Just two chat apps talking directly to each other.&lt;/p&gt;

&lt;hr&gt;

&lt;h2 id=&#34;standing-on-the-shoulders-of-giants-8&#34;&gt;Standing on the Shoulders of Giants&lt;/h2&gt;

&lt;p&gt;None of this would exist without:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;https://www.idsoftware.com/&#34;&gt;id Software&lt;/a&gt;&lt;/strong&gt; for open-sourcing the DOOM engine in 1997 -a decision that created an entire modding ecosystem and directly enabled everything described here&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;https://www.chocolate-doom.org/&#34;&gt;Chocolate Doom&lt;/a&gt;&lt;/strong&gt; for faithfully recreating the original engine in portable, hackable C&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;https://blog.cloudflare.com/doom-multiplayer-workers/&#34;&gt;Cloudflare&lt;/a&gt;&lt;/strong&gt; for proving DOOM-in-WebAssembly was viable and open-sourcing their &lt;a href=&#34;https://github.com/cloudflare/doom-wasm&#34;&gt;doom-wasm&lt;/a&gt; port -the foundation we forked&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;https://emscripten.org/&#34;&gt;Emscripten&lt;/a&gt;&lt;/strong&gt; for making C-to-WASM compilation actually work&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;https://iroh.computer/&#34;&gt;Iroh&lt;/a&gt;&lt;/strong&gt; (by n0.computer) for the QUIC-based P2P gossip protocol that makes serverless real-time gaming possible&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The &lt;a href=&#34;https://webxdc.org/&#34;&gt;WebXDC&lt;/a&gt; community&lt;/strong&gt; for defining an open standard for sandboxed web apps in chat messages&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And a special note: the networking architecture of Open Source DOOM was designed and implemented as a collaboration between a human developer and an AI (&lt;a href=&#34;https://claude.ai&#34;&gt;Claude&lt;/a&gt;, by Anthropic). Not generated and pasted -&lt;em&gt;collaborated on.&lt;/em&gt; Hundreds of iterations, debugging sessions at 3am with hex dumps of gossip packets, heated debates about whether to interpolate angles (don&amp;#39;t), and moments of genuine surprise when things just... worked.&lt;/p&gt;

&lt;hr&gt;

&lt;h2 id=&#34;try-it-8&#34;&gt;Try It&lt;/h2&gt;

&lt;p&gt;Open-Source DOOM is free, open-source, and available today.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://image.nostr.build/90497863e88cc21741a1493be081716f5af3664eced7fbdb063c8f783df534fd.jpg&#34; alt=&#34;image&#34;/&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Play it&lt;/strong&gt;: Download &lt;a href=&#34;https://vectorapp.io&#34;&gt;Vector&lt;/a&gt;, open &lt;strong&gt;Vector Nexus&lt;/strong&gt; (our decentralised in-app Mini App store), and find &lt;strong&gt;DOOM&lt;/strong&gt; in the Multiplayer category. Send it to a friend or group chat and start fragging - no manual file management needed.&lt;/p&gt;

&lt;p&gt;&lt;img src=&#34;https://image.nostr.build/149d09299e73fe56d904f9116b67c22b67935d36b4e263f346d7a179bac605b7.jpg&#34; alt=&#34;image&#34;/&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Read the code&lt;/strong&gt;: The full source is available at &lt;a href=&#34;https://github.com/VectorPrivacy/DOOM&#34;&gt;github.com/nicholasopuni31/doom-wasm&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Build on it&lt;/strong&gt;: The WebXDC realtime channel pattern we developed here works for any real-time multiplayer game.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;If DOOM is &amp;#34;Hello, World&amp;#34; for computing, then Open Source DOOM is &amp;#34;Hello, World&amp;#34; for decentralised gaming.&lt;/em&gt;&lt;/p&gt;

&lt;hr&gt;

&lt;p&gt;&lt;em&gt;Published March 2026. Written by&lt;/em&gt; &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub16ye7evyevwnl0fc9hujsxf9zym72e063awn0pvde0huvpyec5nyq4dg4wn&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;JSKitty&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub16ye…g4wn&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
 &lt;/blockquote&gt;
    </content>
    <updated>2026-03-19T05:55:47Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs0pedmqdm3ajqzpz5dk0xp2q8hdpeal7qk8nx0mnt7zhq5erly3zszyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6mhtt7v</id>
    
      <title type="html">Absolutely! It has been on our agenda for a while, but we wanted ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs0pedmqdm3ajqzpz5dk0xp2q8hdpeal7qk8nx0mnt7zhq5erly3zszyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6mhtt7v" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsf83hr4azp2tdswj5cndejpam0x2ckpk3z69ypyd0nfgfmal8av0qgurxa7&#39;&gt;nevent1q…rxa7&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Absolutely! It has been on our agenda for a while, but we wanted to really polish up the Android release before applying. We are quite happy with the latest release v0.3.2 and look forward to listing Vector on Zapstore. We will be in touch this week. Thank you all  🙏
    </content>
    <updated>2026-03-14T09:47:39Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsxl2xql995hrfsqvhggppd5wq97zl63c537ak4sdfrq427uj4zhpgzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg66ew3rk</id>
    
      <title>Nostr event nevent1qqsxl2xql995hrfsqvhggppd5wq97zl63c537ak4sdfrq427uj4zhpgzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg66ew3rk</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsxl2xql995hrfsqvhggppd5wq97zl63c537ak4sdfrq427uj4zhpgzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg66ew3rk" />
    <content type="html">
       &lt;img src=&#34;https://image.nostr.build/a66b437a5cf4297446e3d35869705acd15fefc4a7f6e004dfdf0fb735d597075.jpg&#34;&gt; &lt;br/&gt;&lt;br/&gt;Many people fall under the illusion that because a company markets their app as &amp;#34;private&amp;#34; or uses fancy buzzwords like &amp;#34;end-to-end encryption&amp;#34; or &amp;#34;secure&amp;#34; that it is what was promised. We have found time and time again that these are blatant lies to ultimately and immorally grow their userbase and hopes at quicker financial success.&lt;br/&gt;&lt;br/&gt;Understand some of the degrees of privacy that actually make apps private. There are degrees of privacy as there are degrees of decentralization and just about everything. In this infographic by Formless Labs it breaks down degrees of privacy for messenger apps on each column: &lt;br/&gt;&lt;br/&gt;- Decentralized&lt;br/&gt;- Metadata Privacy&lt;br/&gt;- No KYC&lt;br/&gt;- Group E2EE&lt;br/&gt;- Self Hosting&lt;br/&gt;&lt;br/&gt;Obvious benefits many people enjoy are also no advertisements and the fact that apps are free (and hopefully open-source).&lt;br/&gt;&lt;br/&gt;Any suggestions on other fields or degrees of privacy that should be added? Let us know!
    </content>
    <updated>2026-03-12T10:18:56Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs0ajzeymw9mr2s4dm0xxrusc4afanp86hmgl8ymlq734y3c5kuz8qzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg692yluu</id>
    
      <title type="html">Noted. Thanks again for your feedback. You have valid points, UX ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs0ajzeymw9mr2s4dm0xxrusc4afanp86hmgl8ymlq734y3c5kuz8qzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg692yluu" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsynmz384kd65u6s9rzpkfean8nw2nzzj4chsudhde4qcjk583xmss5yxq64&#39;&gt;nevent1q…xq64&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Noted. Thanks again for your feedback. &lt;br/&gt;&lt;br/&gt;You have valid points, UX is everything. Unfortunately Telegram is not a privacy-focused app, though it may be marketed that way. It has also been around since 2013, making it about 13 years old, where Vector is roughly 1.2 years old.  In the meantime, we will steadily work to improve Vector. &lt;br/&gt;&lt;br/&gt;Enjoy this infographic from Formless Labs:&lt;br/&gt; &lt;img src=&#34;https://image.nostr.build/a66b437a5cf4297446e3d35869705acd15fefc4a7f6e004dfdf0fb735d597075.jpg&#34;&gt; 
    </content>
    <updated>2026-03-12T10:11:51Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsxnm40xpa802atrwtzprgqlzjf27ge842t3f4yk46z36sgcckuu7szyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg69tpapv</id>
    
      <title type="html">Wonderful! As you can tell Vector is still in Beta and we are ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsxnm40xpa802atrwtzprgqlzjf27ge842t3f4yk46z36sgcckuu7szyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg69tpapv" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsfrjxlhzd054v2u0l42udln5wncfp6p5ylkspr0y5dgxsjytgknjsvyg5v7&#39;&gt;nevent1q…g5v7&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Wonderful! As you can tell Vector is still in Beta and we are working daily to make improvements. If you have any other suggestions &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nprofile1qqs2905f9wz5k65pu764ee8p5pu8fjg6sjf9us9mzktlyf8k3sjjfmq783qse&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;bulbrigertin&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;nprofile…3qse&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; let us know, we are happy to hear honest feedback like yours and what all we can improve. We have quite the list of features to add and things to improve, but broken up into stages. If we get a lot of negative feedback on something or a bug is found, we shift our priority to handle it to make our community&amp;#39;s experience better.
    </content>
    <updated>2026-03-12T10:08:43Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs03nhzy03apm63yy78fl4nk39f7qjylp3xgel9garxr4g3fghw0mczyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6agapuk</id>
    
      <title type="html">Vector supports 4 other themes besides the default Vector theme. ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs03nhzy03apm63yy78fl4nk39f7qjylp3xgel9garxr4g3fghw0mczyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6agapuk" />
    <content type="html">
      Vector supports 4 other themes besides the default Vector theme. Several of them include &amp;#34;Chatstr&amp;#34;, which is an ode to Nostr and &amp;#34;サトシ&amp;#34;, which is an ode to Satoshi and Bitcoin. &lt;br/&gt;&lt;br/&gt;Try them out yourself in the Settings and see which one you like best!&lt;br/&gt;&lt;br/&gt;&lt;br/&gt; &lt;img src=&#34;https://image.nostr.build/fc3d93dbada0cf3df98d0d33b6ddd106dd7a9b7fa241e71c91f2ace9af76aea2.png&#34;&gt;   &lt;img src=&#34;https://image.nostr.build/d35c77a9b52d6e71fd4e31f9aa1a27e8eb08ea36ca6c597624386f1f9f996bbc.png&#34;&gt;   &lt;img src=&#34;https://image.nostr.build/9a7a4583adc886336e350f063db6f2323947b35d435f6cf9ff18a5b675211320.png&#34;&gt;   &lt;img src=&#34;https://image.nostr.build/fec1b15968fff6f0f3d38efd29b115ec3bd3db13eb37d757e84ab4cf6a74ff4c.png&#34;&gt; &lt;br/&gt;&lt;br/&gt;Learn more on our GitBook:&lt;br/&gt;&lt;a href=&#34;https://vector-privacy.gitbook.io/vector-privacy/vector-messenger/features/themes&#34;&gt;https://vector-privacy.gitbook.io/vector-privacy/vector-messenger/features/themes&lt;/a&gt;
    </content>
    <updated>2026-03-12T02:07:46Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsvh60srs6vf8erd9d0gt3c56lwzevyzsqqk4fkhjmvjekecfyrs0czyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6vn79ck</id>
    
      <title>Nostr event nevent1qqsvh60srs6vf8erd9d0gt3c56lwzevyzsqqk4fkhjmvjekecfyrs0czyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6vn79ck</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsvh60srs6vf8erd9d0gt3c56lwzevyzsqqk4fkhjmvjekecfyrs0czyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6vn79ck" />
    <content type="html">
       &lt;img src=&#34;https://image.nostr.build/6159cc39c5ae4cb33a330ea472c0307eab9ba172372b1b5d3eb868e2df2deb79.jpg&#34;&gt; &lt;br/&gt;&lt;br/&gt;Thank you for the feature in &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nprofile1qqszmc8l5zkzxhl5t7jvew2ye5ln8aul7hfplnu47q0ej5ttk6ah9nql724h8&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Nomishka&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;nprofile…24h8&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; &amp;#39;s Substack!&lt;br/&gt;&lt;br/&gt;Many other great developments in the Nostr ecosystem that are covered in this weekly update. Vector is already on v0.3.2, so be sure to update if you are currently on v0.3.1.&lt;br/&gt;&lt;br/&gt;Download The Latest:&lt;br/&gt;&lt;a href=&#34;https://github.com/VectorPrivacy/Vector/releases/tag/v0.3.2&#34;&gt;https://github.com/VectorPrivacy/Vector/releases/tag/v0.3.2&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://nomishka.substack.com/i/189590414/7-vector-v031&#34;&gt;https://nomishka.substack.com/i/189590414/7-vector-v031&lt;/a&gt;
    </content>
    <updated>2026-03-12T01:54:48Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs0axetj00y8hdjfl3tfje2qgqk5dq7gu3x2gmw80rkh9kvydet5lqzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg64azepn</id>
    
      <title type="html">This is what happens with you let @npub12w7…ktz3 ride without a ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs0axetj00y8hdjfl3tfje2qgqk5dq7gu3x2gmw80rkh9kvydet5lqzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg64azepn" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs9yuuhg02lrgjkh7lcdgylxlkvkmvy2ukw6nr9tm9xakaetwmt56cx6mv35&#39;&gt;nevent1q…mv35&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;This is what happens with you let &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub12w73tzcqgpr2pcy4el5x60d2emeud4cyeeayynzqqg2fefzgytaqm4ktz3&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;YuurinBee&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub12w7…ktz3&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;  ride without a saddle and give him no limitations? Absolute BANGER.
    </content>
    <updated>2026-03-10T09:02:00Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs9yuuhg02lrgjkh7lcdgylxlkvkmvy2ukw6nr9tm9xakaetwmt56czyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6nlzwrz</id>
    
      <title type="html">Have you met our designer ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs9yuuhg02lrgjkh7lcdgylxlkvkmvy2ukw6nr9tm9xakaetwmt56czyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6nlzwrz" />
    <content type="html">
      Have you met our designer nprofile1qqs980g43vqyq34quz2ul6rd8k4vau7x6uzvu7jzf3qqy9yu53yz97s7mhh2y?&lt;br/&gt;  &lt;img src=&#34;https://image.nostr.build/204c6d49a8f457e62f77dc58e413cb04044b19f1ceff840fc3daca40391b00ff.jpg&#34;&gt; &lt;blockquote class=&#34;border-l-05rem border-l-strongpink border-solid&#34;&gt;&lt;div class=&#34;-ml-4 bg-gradient-to-r from-gray-100 dark:from-zinc-800 to-transparent mr-0 mt-0 mb-4 pl-4 pr-2 py-2&#34;&gt;quoting  &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Article&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nevent1qqsrktwl4hnywsammlvd5ggx5ahn6czzdqj2yv084s74uh09erdc7dqc76486&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;nevent1q…6486&lt;/a&gt;&lt;/span&gt; &lt;/div&gt;   &lt;img src=&#34;https://image.nostr.build/204c6d49a8f457e62f77dc58e413cb04044b19f1ceff840fc3daca40391b00ff.jpg&#34;&gt; &lt;br/&gt;&lt;br/&gt;⚠️PRIVACY NOT FOR COMPROMISE⚠️&lt;br/&gt;// Evangelion-Inspired Art &amp; Design&lt;br/&gt;&lt;br/&gt;I see a lot of people sharing today about Evangelion Interfaces, really some of the most inspiring and timeless designs. I still watch classic anime like Neon Genesis: Evangelion and Ghost in the Shell and pause to take stills when I see some unique design inspiration.&lt;br/&gt;&lt;br/&gt;This afternoon I just enjoyed spending some time to create a similar feeling (not necessarily the look) that I get from these classic terminal interfaces. It also allows me to be a bit more abstract and really do things I wouldn&#39;t traditionally do in design &gt; minimalism &#43; simplicity for one. Instead I enjoyed making this collage of the Privacy by Principle philosophy with &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nprofile1qqst37fwv8n363vx4eh7d9c0w0wslkufqyy43830g9a773zmhw5jergut5jp4&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;VectorPrivacy&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;nprofile…5jp4&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;  theme. Yes, this is a real app btw and now I&#39;m thinking about making an EVA-01 theme for it.&lt;br/&gt;&lt;br/&gt;For me, one of the most classic visuals that stands out in these types of series are the &#34;Caution&#34; or &#34;Warning&#34; bars that often use a broken horizontal line with 45/60 degree diagonal cuts. It reminds me of industrial buildings or construction where they would have these bright yellow warning signs not to enter or wear a hardhat, etc. Whoever really popularized this design has silently won countless awards and well deserved, they really set the standard and feel for many generations to come. This is about as universal as you can get for design in my opinion.&lt;br/&gt;&lt;br/&gt;Anyways, hope you all enjoy it and excited to see more original work and not getting Claude or AI to design for you. Yep, I said it. Stand by everything that I say. For implementation? Great, but be creative and take time to work on your own designs and not just rely on AI to give you everything. That is where in lies the true joy of creativity and design, enjoying the process... &lt;br/&gt;&lt;br/&gt;The confusion, the clarity. The disarray, the synergy. &lt;/blockquote&gt;
    </content>
    <updated>2026-03-10T09:00:23Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsz94rm9uz56lpum6uarlf3nf2n96t5deuw349t3zkunz3f4d0adsqzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg69839ar</id>
    
      <title type="html">🟢 Vector Music Upload Demo: ID3 Music Tag Support Added for ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsz94rm9uz56lpum6uarlf3nf2n96t5deuw349t3zkunz3f4d0adsqzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg69839ar" />
    <content type="html">
      🟢 Vector Music Upload Demo:&lt;br/&gt;ID3 Music Tag Support Added for Audio Files&lt;br/&gt;*Support since v0.3.2&lt;br/&gt;&lt;br/&gt;What are ID3 Music Tags?&lt;br/&gt;ID3 tags are metadata embedded directly inside audio files (primarily MP3s) that store information about the track. Think of them as a little data packet attached to the file itself. Common fields include things like:&lt;br/&gt;&lt;br/&gt;Title — song name&lt;br/&gt;Artist — performer&lt;br/&gt;Album — album name&lt;br/&gt;Year — release year&lt;br/&gt;Track number — position on the album&lt;br/&gt;Genre — music genre&lt;br/&gt;Album art — the cover image embedded in the file&lt;br/&gt;Lyrics — sometimes embedded too&lt;br/&gt;Comment — freeform notes&lt;br/&gt;&lt;br/&gt;🎵Test it out: vectorapp.io&lt;br/&gt;&lt;br/&gt;Video shared by &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nprofile1qqs980g43vqyq34quz2ul6rd8k4vau7x6uzvu7jzf3qqy9yu53yz97s7mhh2y&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;YuurinBee&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;nprofile…hh2y&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; &lt;br/&gt; &lt;video controls width=&#34;100%&#34; class=&#34;max-h-[90vh] bg-neutral-300 dark:bg-zinc-700&#34;&gt;&lt;source src=&#34;https://video.nostr.build/63053a0842fba0907a7d98e677d063d09b2b4d10201638ca26be55a63ea82cd2.mp4&#34;&gt;&lt;/video&gt;&lt;br/&gt;
    </content>
    <updated>2026-03-10T05:58:14Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs98x3jk0zpxeymexdcfzqxtc9wdusc0zx2wsaj46rkkq3k3868qnszyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6spu56d</id>
    
      <title type="html">Wonderful, so your biggest feedback is about Audio playback not ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs98x3jk0zpxeymexdcfzqxtc9wdusc0zx2wsaj46rkkq3k3868qnszyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6spu56d" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsdnqhwjyjl5klmxzx8pqdn3gz3ew98hvtk3e5lzu5zzf05yfh5ljqp9xu66&#39;&gt;nevent1q…xu66&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Wonderful, so your biggest feedback is about Audio playback not being comparable to migrate millions to Nostr? We appreciate the feedback and will also work on the Audio UX. There are titles now when you upload music or audio files if you are on the latest v0.3.2. Any other key points you&amp;#39;d like to see Vector improve?
    </content>
    <updated>2026-03-10T01:59:33Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqstvv2fzqcnqgzcm253uv8c6ratuvr5k6ted8rds6ee5ru9wa9hc2czyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg60fcd7t</id>
    
      <title type="html">We are going to make this happen on both White Noise &#43; Vector for ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqstvv2fzqcnqgzcm253uv8c6ratuvr5k6ted8rds6ee5ru9wa9hc2czyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg60fcd7t" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqspen9v335yf5s5aqtfkkjvsh0elhuu27euaw7aaahhnj63x6l3nnc7kx8my&#39;&gt;nevent1q…x8my&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;We are going to make this happen on both White Noise &#43; Vector for our teams to chat &#43; Marmot development. It&amp;#39;s a great first stepping stone to understand the UX better.
    </content>
    <updated>2026-03-10T01:35:37Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsypp38enlzy6xt5qrzaq4fghk8pv0k6xynhcpq9s78dh2axmn8k5szyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg699qzjr</id>
    
      <title type="html">We&amp;#39;ve sent our first Pull Request to NostrApps.com using ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsypp38enlzy6xt5qrzaq4fghk8pv0k6xynhcpq9s78dh2axmn8k5szyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg699qzjr" />
    <content type="html">
      We&amp;#39;ve sent our first Pull Request to NostrApps.com using GitWorkshop.Dev! Nostr is the way. &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nprofile1qqsrhuxx8l9ex335q7he0f09aej04zpazpl0ne2cgukyawd24mayt8g2lcy6q&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;fiatjaf&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;nprofile…cy6q&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; &lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://gitworkshop.dev/npub180cvv07tjdrrgpa0j7j7tmnyl2yr6yr7l8j4s3evf6u64th6gkwsyjh6w6/nostrapps-com/prs/note1lm8yutcssrshnt5tm7dt6aehe5j9pzvflg93gl7zx50tr9gf7wysx7t708&#34;&gt;https://gitworkshop.dev/npub180cvv07tjdrrgpa0j7j7tmnyl2yr6yr7l8j4s3evf6u64th6gkwsyjh6w6/nostrapps-com/prs/note1lm8yutcssrshnt5tm7dt6aehe5j9pzvflg93gl7zx50tr9gf7wysx7t708&lt;/a&gt;&lt;br/&gt;&lt;br/&gt; &lt;img src=&#34;https://image.nostr.build/da213e4a7b91e3ed00e5b5649af7386464db1d9844222bf57c85625b47e5906a.jpg&#34;&gt; 
    </content>
    <updated>2026-03-10T00:04:41Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsz84tz0yr8gqw7w8aqql0ssyxwmt526njf3l6l9cljpcd477us8jgzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg69xyml6</id>
    
      <title type="html">Our team has started to use Vector daily and slowly progressing ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsz84tz0yr8gqw7w8aqql0ssyxwmt526njf3l6l9cljpcd477us8jgzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg69xyml6" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsqg8gqy30uq79jqwse6xxz444f6fh303679nwwu3af8h27m006dyqj5g7ls&#39;&gt;nevent1q…g7ls&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Our team has started to use Vector daily and slowly progressing to replace both Discord and Telegram in their personal lives first. We&amp;#39;re not claiming that it is anywhere near that level for adoption yet, but simply that it is our goal to have a true privacy messenger app that has all the features you would expect of mainstream messengers &#43; more, without complicating or slowing down the UX. We welcome any honest critique and feedback. &lt;br/&gt;&lt;br/&gt;If you&amp;#39;d like to just dig around a little more without downloading it first, you&amp;#39;re welcome to check out our GitBook which has most of Vector Privacy&amp;#39;s ecosystem documented: &lt;a href=&#34;https://docs.vectorapp.io&#34;&gt;https://docs.vectorapp.io&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;We are also more than happy to address any questions you may have.
    </content>
    <updated>2026-03-09T23:58:00Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs8ttylmf7z24m8k88anj7xvcqlap20f4lvjmd9zgl6caht3l7zs0szyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6lee893</id>
    
      <title type="html">Thank you! We couldn&amp;#39;t achieve the results we seek without ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs8ttylmf7z24m8k88anj7xvcqlap20f4lvjmd9zgl6caht3l7zs0szyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6lee893" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsxdck3td4ptkflm039swlf222kdhzdh8uk5p0yuyujyc4rszurlus8037wa&#39;&gt;nevent1q…37wa&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Thank you! We couldn&amp;#39;t achieve the results we seek without Marmot. It&amp;#39;s also amazing seeing the community growing around Marmot and more developers, projects, and peer review to further solidify the protocol. Now is a bad time to be sleeping on Marmot  🫡&lt;br/&gt;&lt;br/&gt; &lt;img src=&#34;https://image.nostr.build/4ab56bb1b30241730a4181c5e8566fc635993f8fb317140113c640f9a11282bd.png&#34;&gt; 
    </content>
    <updated>2026-03-09T21:54:14Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs9gtsa2fvdaws33lk9d4ppu3m2qvy6uf3erdm8feyxhxendddx33qzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6d7zwy2</id>
    
      <title type="html">Thanks for the shoutout and absolutely nailed it 🙏 the Era of ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs9gtsa2fvdaws33lk9d4ppu3m2qvy6uf3erdm8feyxhxendddx33qzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6d7zwy2" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsg2faavjxxugacq8qwkc0ldy0k7xphe3fp3gkld5hvmdlsz7lrwrgttytvk&#39;&gt;nevent1q…ytvk&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Thanks for the shoutout and absolutely nailed it  🙏 the Era of Permissionless Privacy has begun
    </content>
    <updated>2026-03-08T17:58:06Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs9k4g74afl7crv95qjm5ah2vkfwtawclfd0sv0uj3fp3n60ym83tszyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6gugd38</id>
    
      <title>Nostr event nevent1qqs9k4g74afl7crv95qjm5ah2vkfwtawclfd0sv0uj3fp3n60ym83tszyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6gugd38</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs9k4g74afl7crv95qjm5ah2vkfwtawclfd0sv0uj3fp3n60ym83tszyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6gugd38" />
    <content type="html">
       &lt;img src=&#34;https://image.nostr.build/c2fd0bd3bbeda5820ee91e2d38be17b47680329063768d03fecbfd43413aa25e.jpg&#34;&gt; &lt;br/&gt;&lt;br/&gt;Have you tested out this Nostr-inspired theme?&lt;br/&gt;&lt;br/&gt;Settings &amp;gt; Theme &amp;gt; Chatstr&lt;br/&gt;&lt;br/&gt;Learn More About Vector Themes:&lt;br/&gt;&lt;a href=&#34;https://vector-privacy.gitbook.io/vector-privacy/vector-messenger/features/themes&#34;&gt;https://vector-privacy.gitbook.io/vector-privacy/vector-messenger/features/themes&lt;/a&gt;
    </content>
    <updated>2026-03-06T16:34:47Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsxwj6ydy7j88lsz5epj7yej02z9yvy7jeae0ahvk8pdhzckpdz7ygzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg69j8m7g</id>
    
      <title type="html">#naddr1qv…jmfg</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsxwj6ydy7j88lsz5epj7yej02z9yvy7jeae0ahvk8pdhzckpdz7ygzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg69j8m7g" />
    <content type="html">
      &lt;blockquote class=&#34;border-l-05rem border-l-strongpink border-solid&#34;&gt;&lt;div class=&#34;-ml-4 bg-gradient-to-r from-gray-100 dark:from-zinc-800 to-transparent mr-0 mt-0 mb-4 pl-4 pr-2 py-2&#34;&gt;quoting  &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Article&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/naddr1qvzqqqr4gupzqa6e2nmnzsgjfzdy520vdy4hywr06c9ue6crpr2zxyq749uu275qqqgrwdnxvyukxdnpv3jnjcehxdnrvm8jmfg&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;naddr1qv…jmfg&lt;/a&gt;&lt;/span&gt; &lt;/div&gt; &lt;p&gt;Welcome back to Nostr Compass, your weekly guide to Nostr.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;This week:&lt;/strong&gt; The &lt;a href=&#34;https://github.com/marmot-protocol/mdk&#34;&gt;Marmot Development Kit&lt;/a&gt; (&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1whtn0s68y3cs98zysa4nxrfzss5g5snhndv35tk5m2sudsr7ltms48r3ec&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;White Noise&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1wht…r3ec&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;) ships its &lt;a href=&#34;https://nostrcompass.org/en/newsletters/2026-03-04-newsletter/#marmot-development-kit-ships-first-public-release&#34;&gt;first public release&lt;/a&gt; with encrypted media and multi-language bindings. &lt;a href=&#34;https://github.com/nostrability/outbox&#34;&gt;Nostrability&lt;/a&gt; (&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1zafcms4xya5ap9zr7xxr0jlrtrattwlesytn2s42030lzu0dwlzqpd26k5&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;elsat&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1zaf…26k5&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;) publishes &lt;a href=&#34;https://nostrcompass.org/en/newsletters/2026-03-04-newsletter/#outbox-model-under-the-microscope&#34;&gt;outbox model benchmarks&lt;/a&gt; across 14 relay selection algorithms. &lt;a href=&#34;https://github.com/barrydeen/wisp&#34;&gt;Wisp&lt;/a&gt; (&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1utx00neqgqln72j22kej3ux7803c2k986henvvha4thuwfkper4s7r50e8&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;utxo the webmaster 🧑‍💻&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1utx…50e8&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;) goes from &lt;a href=&#34;https://nostrcompass.org/en/newsletters/2026-03-04-newsletter/#wisp-ships-from-alpha-to-beta&#34;&gt;first alpha to beta&lt;/a&gt; in eight days with Tor and &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-55/&#34;&gt;NIP-55&lt;/a&gt; (Android Signer Application) signing. &lt;a href=&#34;https://nostrcompass.org/en/newsletters/2026-03-04-newsletter/#nip-updates&#34;&gt;NIP-91&lt;/a&gt; (AND filters) merges. &lt;a href=&#34;https://nostrcompass.org/en/newsletters/2026-03-04-newsletter/#vector-v031&#34;&gt;Vector v0.3.1&lt;/a&gt; delivers negentropy sync with 15x performance gains. This issue also includes the Five Years of Nostr Februaries retrospective, tracing the protocol from a spec rewrite serving three relays through the Damus App Store explosion to mesh networking and AI agent proposals.&lt;/p&gt;

&lt;h2 id=&#34;news-2&#34;&gt;News&lt;/h2&gt;

&lt;h3 id=&#34;outbox-model-under-the-microscope-2&#34;&gt;Outbox Model Under the Microscope&lt;/h3&gt;

&lt;p&gt;&lt;a href=&#34;https://github.com/nostrability/outbox&#34;&gt;Nostrability&lt;/a&gt; published a series of outbox model benchmarks testing how well different relay selection algorithms retrieve events from the decentralized relay network. The project merged 16 PRs and 76 commits in ten days, producing what may be the most thorough empirical analysis of &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-65/&#34;&gt;NIP-65&lt;/a&gt; (Relay List Metadata) implementation strategies to date.&lt;/p&gt;

&lt;p&gt;The benchmarks test 14 relay selection algorithms against real-world follow lists across 15 clients and libraries in five languages. A baseline approach of querying only popular relays retrieves roughly 26% of events. Greedy set-cover with Thompson Sampling reaches 80-90% recall. Adding a latency-aware variant using hyperbolic discounting and EWMA relay latency tracking pushed completeness from 62-80% to 72-96% at the 2-second mark across six test profiles.&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;https://nostrcompass.org/en/topics/nip-66/&#34;&gt;NIP-66&lt;/a&gt; (Relay Monitoring) dead relay filtering proved consequential. Pre-filtering relay candidates against &lt;a href=&#34;https://nostr.watch&#34;&gt;nostr.watch&lt;/a&gt; (&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1uac67zc9er54ln0kl6e4qp2y6ta3enfcg7ywnayshvlw9r5w6ehsqq99rx&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;sandwich&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1uac…99rx&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;) liveness data removed 40-64% of dead relays and doubled relay success rates from 30% to 75-85%. Feed load times dropped 39% (from 40 seconds to 24 seconds across 10 profiles). An EOSE-race simulation found that waiting for EOSE plus a 200ms grace period improved completeness over stopping at the first relay to finish.&lt;/p&gt;

&lt;p&gt;For clients that cannot fully rewrite their relay routing, a &amp;#34;hybrid outbox enrichment&amp;#34; approach adds per-author outbox queries on top of existing hardcoded app relays. This hybrid achieved 80% one-year event recall versus the 26% baseline, offering a migration path for clients with legacy relay architectures.&lt;/p&gt;

&lt;h3 id=&#34;contextvm-opens-mcp-nip-and-ships-ephemeral-gift-wraps-2&#34;&gt;ContextVM Opens MCP NIP and Ships Ephemeral Gift Wraps&lt;/h3&gt;

&lt;p&gt;&lt;a href=&#34;https://contextvm.org&#34;&gt;ContextVM&lt;/a&gt; (&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;ContextVM&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1dvm…3jdm&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;), the protocol bridging Nostr with the &lt;a href=&#34;https://modelcontextprotocol.io/&#34;&gt;Model Context Protocol&lt;/a&gt;, opened two proposals in the &lt;a href=&#34;https://github.com/nostr-protocol/nips&#34;&gt;NIPs repository&lt;/a&gt; this week. &lt;a href=&#34;https://github.com/nostr-protocol/nips/pull/2246&#34;&gt;PR #2246&lt;/a&gt; formalizes CVM as a convention for transporting MCP JSON-RPC messages over Nostr using ephemeral kind 25910 events. &lt;a href=&#34;https://github.com/nostr-protocol/nips/pull/2245&#34;&gt;PR #2245&lt;/a&gt; extends &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-59/&#34;&gt;NIP-59&lt;/a&gt; (Gift Wrap) with an ephemeral kind (21059) that follows &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-01/&#34;&gt;NIP-01&lt;/a&gt; (Basic Protocol Flow) ephemeral semantics, letting relays discard wrapped messages after delivery.&lt;/p&gt;

&lt;p&gt;The ephemeral gift wrap convention shipped as &lt;a href=&#34;https://docs.contextvm.org/spec/ceps/cep-19/&#34;&gt;CEP-19&lt;/a&gt; in the ContextVM SDK v0.6.x release family. The &lt;a href=&#34;https://github.com/ContextVM/sdk&#34;&gt;SDK implementation&lt;/a&gt; adds a &lt;code&gt;GiftWrapMode&lt;/code&gt; enum with three settings: OPTIONAL (accept both kinds and auto-detect peer capability), EPHEMERAL (kind 21059 only), and PERSISTENT (kind 1059 only). For AI tool calls, ephemeral mode avoids storing intermediate request-response traffic on relays, reducing both storage costs and privacy exposure.&lt;/p&gt;

&lt;p&gt;New public MCP servers appeared on the network from independent operators, including a Wolfram Alpha query server. The ContextVM team published CEP-15 (common tools schema) and CEP-17 (server relay list publication) alongside the v0.6.x release cycle.&lt;/p&gt;

&lt;h3 id=&#34;marmot-development-kit-ships-first-public-release-2&#34;&gt;Marmot Development Kit Ships First Public Release&lt;/h3&gt;

&lt;p&gt;&lt;a href=&#34;https://github.com/marmot-protocol/mdk&#34;&gt;MDK&lt;/a&gt; (&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1whtn0s68y3cs98zysa4nxrfzss5g5snhndv35tk5m2sudsr7ltms48r3ec&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;White Noise&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1wht…r3ec&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;, Marmot Development Kit), the Rust library powering &lt;a href=&#34;https://nostrcompass.org/en/topics/mls/&#34;&gt;Marmot&lt;/a&gt;-encrypted messaging across &lt;a href=&#34;https://github.com/sledtools/pika&#34;&gt;Pika&lt;/a&gt; (&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1zxu639qym0esxnn7rzrt48wycmfhdu3e5yvzwx7ja3t84zyc2r8qz8cx2y&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;justinmoon&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1zxu…cx2y&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;) and &lt;a href=&#34;https://github.com/marmot-protocol/whitenoise&#34;&gt;White Noise&lt;/a&gt;, shipped &lt;a href=&#34;https://github.com/marmot-protocol/mdk/releases/tag/v0.6.0&#34;&gt;v0.6.0&lt;/a&gt; as its first public release. Over 200 PRs merged into this version, with six new contributors.&lt;/p&gt;

&lt;p&gt;The release includes encrypted media support (MIP-04) with HKDF seed derivation (MIP-01 v2), deterministic commit race resolution (MIP-03), encrypted local storage, admin authorization validation for Marmot commits and proposals, and GREASE support for protocol extensibility. Bindings ship for Kotlin, Python, Ruby, and Windows alongside Android cross-compilation. The library upgrades to OpenMLS 0.8.0 with security advisory fixes and a &lt;code&gt;Secret&amp;lt;T&amp;gt;&lt;/code&gt; type that zeroizes sensitive values in memory.&lt;/p&gt;

&lt;p&gt;A companion protocol change (&lt;a href=&#34;https://github.com/marmot-protocol/marmot/pull/48&#34;&gt;MIP-03&lt;/a&gt;) replaced &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-44/&#34;&gt;NIP-44&lt;/a&gt; (Encrypted Payloads) encryption with ChaCha20-Poly1305 for kind 445 messages. NIP-44 required UTF-8 string input per its specification, making it impossible to pass raw Marmot message bytes through standard TypeScript Nostr libraries. The replacement derives keys directly from the Marmot exporter secret. This breaking change required coordinated updates across the &lt;a href=&#34;https://github.com/marmot-protocol/marmot/pull/48&#34;&gt;core spec&lt;/a&gt;, &lt;a href=&#34;https://github.com/marmot-protocol/mdk/pull/208&#34;&gt;MDK&lt;/a&gt;, and &lt;a href=&#34;https://github.com/marmot-protocol/marmot-ts/pull/54&#34;&gt;TypeScript SDK&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;https://github.com/marmot-protocol/marmot-ts&#34;&gt;marmot-ts&lt;/a&gt; (&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1whtn0s68y3cs98zysa4nxrfzss5g5snhndv35tk5m2sudsr7ltms48r3ec&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;White Noise&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1wht…r3ec&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;), the TypeScript implementation maintained by hzrd149, merged four PRs with breaking API changes in its own right. An &lt;a href=&#34;https://github.com/marmot-protocol/marmot-ts/pull/52&#34;&gt;omnibus update&lt;/a&gt; added a key package manager for create/publish/rotate lifecycle, a &lt;code&gt;sendChatMessage&lt;/code&gt; convenience method, invite preview without joining (&lt;code&gt;readInviteGroupInfo&lt;/code&gt;), self-update for forward-secrecy rotations, and structured debug logging. Group decryption APIs were renamed from &lt;code&gt;readGroupMessage&lt;/code&gt; to &lt;code&gt;decryptGroupMessage&lt;/code&gt; with richer result variants (processed/skipped/rejected/unreadable). gzuuus contributed example cleanup with NIP-65 relay support and last-resort key package handling per MIP-00.&lt;/p&gt;

&lt;p&gt;The &lt;a href=&#34;https://github.com/marmot-protocol/whitenoise-rs&#34;&gt;White Noise CLI&lt;/a&gt; (&lt;code&gt;wn&lt;/code&gt;), the Rust backend powering both the mobile app and the new TUI, merged 16 PRs in ten days. Signer lifecycle handling gained cancellation safety through an RAII scope guard (&lt;a href=&#34;https://github.com/marmot-protocol/whitenoise-rs/pull/538&#34;&gt;PR #538&lt;/a&gt;), fixing a class of bugs where aborted operations could leak signer state. Login now blocks when required relay lists (kind 10002/10050/10051) are missing (&lt;a href=&#34;https://github.com/marmot-protocol/whitenoise-rs/pull/515&#34;&gt;PR #515&lt;/a&gt;), and giftwrap subscriptions fall back to &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-65/&#34;&gt;NIP-65&lt;/a&gt; relays when inbox lists are absent (&lt;a href=&#34;https://github.com/marmot-protocol/whitenoise-rs/pull/518&#34;&gt;PR #518&lt;/a&gt;). A debug mode (&lt;a href=&#34;https://github.com/marmot-protocol/whitenoise-rs/pull/528&#34;&gt;PR #528&lt;/a&gt;) exposes database queries and MLS ratchet-tree inspection as JSON output. Other fixes addressed subscription recovery after signer re-registration, welcome message catch-up timing, relay filter validation, and user search radius limits.&lt;/p&gt;

&lt;p&gt;Marmot saw significant expansion beyond the core Rust stack this week. &lt;a href=&#34;https://github.com/marmot-protocol/wn-tui&#34;&gt;White Noise TUI&lt;/a&gt;, a terminal-based interface to the White Noise messaging stack, launched March 3. It wraps the &lt;code&gt;wn&lt;/code&gt; CLI as a subprocess and renders its JSON output through an Elm-inspired unidirectional architecture, providing multi-conversation navigation with unread indicators, group creation and member search, real-time message streaming, and emoji reactions from the terminal.&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;https://github.com/DavidGershony&#34;&gt;DavidGershony&lt;/a&gt; published a complete C# Marmot stack mirroring the Rust toolchain&amp;#39;s layered architecture. &lt;a href=&#34;https://github.com/DavidGershony/dotnet-mls&#34;&gt;dotnet-mls&lt;/a&gt; implements MLS RFC 9420 cryptographic primitives in C#. &lt;a href=&#34;https://github.com/DavidGershony/marmot-cs&#34;&gt;marmot-cs&lt;/a&gt; builds on it to add Nostr relay transport, functioning as a C# equivalent of MDK. &lt;a href=&#34;https://github.com/DavidGershony/openChat&#34;&gt;OpenChat&lt;/a&gt; (&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1nwt2g6fkshuj4udrs9zxr8992dyp75s9qx647kxaue98trzqqmssrxx05y&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;npub1nwt2g6fkshuj4udrs9zxr8992dyp75s9qx647kxaue98trzqqmssrxx05y&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1nwt…x05y&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;), a cross-platform desktop app built with .NET 9 and Avalonia UI, ties both together into a working chat client with NIP-44 DMs, Marmot group encryption, &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-46/&#34;&gt;NIP-46&lt;/a&gt; (Nostr Connect) remote signing, and multi-relay status indicators.&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;https://github.com/zerosats/mdk-pwa-reference&#34;&gt;MDK PWA Reference&lt;/a&gt; provides a Progressive Web App template for building Marmot-encrypted applications, with experimental support for AI agent participation in group chats and Bitcoin payments via Arkade wallet infrastructure.&lt;/p&gt;

&lt;h3 id=&#34;wisp-ships-from-alpha-to-beta-2&#34;&gt;Wisp Ships from Alpha to Beta&lt;/h3&gt;

&lt;p&gt;&lt;a href=&#34;https://github.com/barrydeen/wisp&#34;&gt;Wisp&lt;/a&gt; is a new Android Nostr client that went from &lt;a href=&#34;https://github.com/barrydeen/wisp/releases/tag/v0.1.0-alpha&#34;&gt;first alpha&lt;/a&gt; on February 24 to &lt;a href=&#34;https://github.com/barrydeen/wisp/releases/tag/v0.3.4-beta&#34;&gt;v0.3.4-beta&lt;/a&gt; on March 3, producing 19 releases, 115 merged PRs, and 276 commits in eight days.&lt;/p&gt;

&lt;p&gt;The feature trajectory covers ground that most clients take months to reach. v0.1.0 shipped with outbox/inbox relay model support and onboarding flows. By v0.1.3, the client had &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-55/&#34;&gt;NIP-55&lt;/a&gt; intent-based signing for Amber, an embedded Tor SOCKS5 proxy for &lt;code&gt;.onion&lt;/code&gt; relay connectivity, and &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-47/&#34;&gt;NIP-47&lt;/a&gt; (Nostr Wallet Connect). v0.2.0 graduated to beta with mute list filtering and custom emoji support, while v0.2.4 added content warning overlays. The v0.3.x series introduced &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-13/&#34;&gt;NIP-13&lt;/a&gt; proof-of-work for notes, background PoW mining with persistent settings, &lt;code&gt;.onion&lt;/code&gt; relay storage, and mute thread notifications.&lt;/p&gt;

&lt;p&gt;On-device translation via Google ML Kit runs locally without network access after the initial model download. An interactive social graph visualization uses a velocity Verlet physics simulation at approximately 30fps with pinch-to-zoom navigation and profile inspection.&lt;/p&gt;

&lt;h2 id=&#34;releases-2&#34;&gt;Releases&lt;/h2&gt;

&lt;h3 id=&#34;vector-v0-3-1-2&#34;&gt;Vector v0.3.1&lt;/h3&gt;

&lt;p&gt;&lt;a href=&#34;https://github.com/VectorPrivacy/Vector&#34;&gt;Vector&lt;/a&gt; (&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1hrujuc08r4zcdtn0u6ts7u7apldcjqgftz0z7stmaaz9hwaf9jxs66f3yh&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;VectorPrivacy&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1hru…f3yh&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;), the Marmot-encrypted messaging app, shipped &lt;a href=&#34;https://github.com/VectorPrivacy/Vector/releases/tag/v0.3.1&#34;&gt;v0.3.1&lt;/a&gt; with group management improvements and performance work. Multi-admin groups, bulk invites, invite-by-npub, and group avatars expand the collaboration features. Android background notifications now support inline Reply and Mark Read actions.&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;https://nostrcompass.org/en/topics/negentropy/&#34;&gt;Negentropy&lt;/a&gt;-based deterministic sync retrieves full conversation history including messages that were missed during offline periods. Voice-to-text rebuilt with GPU acceleration on Android. File attachment handling was overhauled with download progress, retry states, directory zip-and-send, and live progress indicators throughout. Performance improved over 15x across boot time, image processing, audio playback, and general UI responsiveness. App install size dropped by more than a third, with the frontend reduced by roughly half. 32-bit ARM Android support was added.&lt;/p&gt;

&lt;h3 id=&#34;alby-hub-v1-21-5-2&#34;&gt;Alby Hub v1.21.5&lt;/h3&gt;

&lt;p&gt;&lt;a href=&#34;https://github.com/getAlby/hub&#34;&gt;Alby Hub&lt;/a&gt; (&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1getal6ykt05fsz5nqu4uld09nfj3y3qxmv8crys4aeut53unfvlqr80nfm&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Alby&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1get…0nfm&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;), the self-custodial Lightning node with Nostr Wallet Connect (&lt;a href=&#34;https://nostrcompass.org/en/topics/nip-47/&#34;&gt;NIP-47&lt;/a&gt;) support, shipped &lt;a href=&#34;https://github.com/getAlby/hub/releases/tag/v1.21.5&#34;&gt;v1.21.5&lt;/a&gt;. A second relay was added to the default NWC configuration, improving reliability during relay restarts. A fix for invalid zap data in the transaction list resolves a display issue with malformed &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-57/&#34;&gt;NIP-57&lt;/a&gt; (Lightning Zaps) events. New app store entries include Alby CLI and LNVPS.&lt;/p&gt;

&lt;h3 id=&#34;nospeak-v0-12-x-2&#34;&gt;nospeak v0.12.x&lt;/h3&gt;

&lt;p&gt;&lt;a href=&#34;https://github.com/psic4t/nospeak&#34;&gt;nospeak&lt;/a&gt; (&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub174t832slt4252dk526cnh64sfa3k6claah2cdl3c5n9eeeyvjz7q2fmqm6&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;psic4t&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub174t…mqm6&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;), the text-based Nostr messaging client, shipped three releases across the period. &lt;a href=&#34;https://github.com/psic4t/nospeak/releases/tag/v0.12.0&#34;&gt;v0.12.0&lt;/a&gt; added a PIN app lock with 4-digit keypad and over 15 new language translations including Bengali, Thai, Vietnamese, Hindi, Arabic, Hebrew, Urdu, Turkish, Japanese, Chinese, Korean, Dutch, Polish, Russian, and Persian with RTL support. &lt;a href=&#34;https://github.com/psic4t/nospeak/releases/tag/v0.12.1&#34;&gt;v0.12.1&lt;/a&gt; introduced a Cypher theme with pure black backgrounds and cyan accents, plus Android video poster generation. &lt;a href=&#34;https://github.com/psic4t/nospeak/releases/tag/v0.12.2&#34;&gt;v0.12.2&lt;/a&gt; added chat export and View Profile in contact menus.&lt;/p&gt;

&lt;h3 id=&#34;citrine-v2-0-0-pre2-2&#34;&gt;Citrine v2.0.0-pre2&lt;/h3&gt;

&lt;p&gt;&lt;a href=&#34;https://github.com/greenart7c3/Citrine&#34;&gt;Citrine&lt;/a&gt; (&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1w4uswmv6lu9yel005l3qgheysmr7tk9uvwluddznju3nuxalevvs2d0jr5&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;greenart7c3&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1w4u…0jr5&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;), the Android personal relay by greenart7c3, shipped &lt;a href=&#34;https://github.com/greenart7c3/Citrine/releases/tag/v2.0.0-pre2&#34;&gt;v2.0.0-pre2&lt;/a&gt; with relay performance improvements through new database indexes and restructured Kotlin coroutines. Each hosted web app now starts on its own port. Full-text search and a redesigned events screen with event expansion round out the changes.&lt;/p&gt;

&lt;h3 id=&#34;noornote-v0-5-x-2&#34;&gt;NoorNote v0.5.x&lt;/h3&gt;

&lt;p&gt;&lt;a href=&#34;https://github.com/77elements/noornote&#34;&gt;NoorNote&lt;/a&gt; (&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub175nul9cvufswwsnpy99lvyhg7ad9nkccxhkhusznxfkr7e0zxthql9g6w0&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;alp&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub175n…g6w0&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;), a Nostr-based note-taking application, shipped 8 releases from &lt;a href=&#34;https://github.com/77elements/noornote/releases/tag/v0.5.0&#34;&gt;v0.5.0&lt;/a&gt; through &lt;a href=&#34;https://github.com/77elements/noornote/releases/tag/v0.5.7&#34;&gt;v0.5.7&lt;/a&gt;. The v0.5.0 launch on Android added &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-55/&#34;&gt;NIP-55&lt;/a&gt; Amber signer support and &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-71/&#34;&gt;NIP-71&lt;/a&gt; (Video Events) note publishing. A redesigned welcome page in v0.5.1 included public timeline previews and reduced the APK to 15 MB. The Relay Browser in v0.5.2 lets users browse public relay timelines via shareable URLs, alongside media download and &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-30/&#34;&gt;NIP-30&lt;/a&gt; custom emoji reactions. Subsequent releases through v0.5.7 addressed sync race conditions in the collaborative &amp;#34;tribes&amp;#34; note-sharing system.&lt;/p&gt;

&lt;h3 id=&#34;noscall-v0-5-1-2&#34;&gt;NosCall v0.5.1&lt;/h3&gt;

&lt;p&gt;&lt;a href=&#34;https://github.com/sanah9/noscall&#34;&gt;NosCall&lt;/a&gt; (&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1qn6wvpmqfnpl3xsu79yvfcgpjz4azdfe5ft220nqjmwqg223fvaq58xsha&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;sana&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1qn6…xsha&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;), the Nostr voice and video calling app, shipped &lt;a href=&#34;https://github.com/sanah9/noscall/releases/tag/v0.5.1-release&#34;&gt;v0.5.1&lt;/a&gt; with voice message support, an optimized desktop experience with group entry, contact favorites on desktop, contact notes and filtering, data export and cleanup options, and system font size accessibility support.&lt;/p&gt;

&lt;h3 id=&#34;shosho-v0-13-0-2&#34;&gt;Shosho v0.13.0&lt;/h3&gt;

&lt;p&gt;&lt;a href=&#34;https://github.com/r0d8lsh0p/shosho-releases&#34;&gt;Shosho&lt;/a&gt; (&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1sh0spghk4yvy2d2v35kelw45qq4msk6zykaw4ds047e9slzs8r4qr7q2xa&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Shosho – Live Stream on Nostr&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1sh0…q2xa&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;), the Nostr live streaming app, shipped &lt;a href=&#34;https://github.com/r0d8lsh0p/shosho-releases/releases/tag/v0.13.0&#34;&gt;v0.13.0&lt;/a&gt; with MP4 replay downloads from stream card menus and &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-05/&#34;&gt;NIP-05&lt;/a&gt; (DNS-Based Verification) for profiles. The RTMP publisher migrated to Expo Modules API. Streaming performance on lower-bandwidth connections improved, and crashes on older devices and iOS streaming to &lt;a href=&#34;https://zap.stream&#34;&gt;Zap.Stream&lt;/a&gt; are fixed.&lt;/p&gt;

&lt;h3 id=&#34;nostr-java-v2-0-0-2&#34;&gt;nostr-java v2.0.0&lt;/h3&gt;

&lt;p&gt;&lt;a href=&#34;https://github.com/tcheeric/nostr-java&#34;&gt;nostr-java&lt;/a&gt; shipped &lt;a href=&#34;https://github.com/tcheeric/nostr-java/releases/tag/v2.0.0&#34;&gt;v2.0.0&lt;/a&gt; with configurable WebSocket buffer sizes, allowing applications to handle larger Nostr events without truncation. The major version bump reflects breaking changes to the connection API.&lt;/p&gt;

&lt;h3 id=&#34;prism-1-1-0-2&#34;&gt;Prism 1.1.0&lt;/h3&gt;

&lt;p&gt;&lt;a href=&#34;https://github.com/hardran3/Prism&#34;&gt;Prism&lt;/a&gt; shipped &lt;a href=&#34;https://github.com/hardran3/Prism/releases/tag/1.1.0&#34;&gt;1.1.0&lt;/a&gt; with long-form content support (kind 30023 articles) and a Markdown editor for composing directly in the app, followed by a &lt;a href=&#34;https://github.com/hardran3/Prism/releases/tag/1.1.1&#34;&gt;1.1.1&lt;/a&gt; bug fix release.&lt;/p&gt;

&lt;h3 id=&#34;angor-v0-2-6-2&#34;&gt;Angor v0.2.6&lt;/h3&gt;

&lt;p&gt;&lt;a href=&#34;https://github.com/block-core/angor&#34;&gt;Angor&lt;/a&gt; (&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1wrzguj625auyeysfuuxzf7ywhzlwfz9gm3fml2lul72gwqxw8n9swtcm02&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Angor&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1wrz…cm02&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;), the Bitcoin crowdfunding platform, shipped &lt;a href=&#34;https://github.com/block-core/angor/releases/tag/v0.2.6&#34;&gt;v0.2.6&lt;/a&gt; with Boltz integration and a 1-click invest flow. Both invest and fund project types work end-to-end on testnet. The team notes the UI is approximately 70% complete.&lt;/p&gt;

&lt;h2 id=&#34;nip-updates-2&#34;&gt;NIP Updates&lt;/h2&gt;

&lt;p&gt;Recent changes to the &lt;a href=&#34;https://github.com/nostr-protocol/nips&#34;&gt;NIPs repository&lt;/a&gt;:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Merged:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;a href=&#34;https://github.com/nostr-protocol/nips/pull/1365&#34;&gt;NIP-91: AND Operator for Filters&lt;/a&gt;&lt;/strong&gt;: Adds AND filter semantics for tag arrays in relay subscriptions. Currently, specifying multiple values in a tag filter (e.g., multiple &lt;code&gt;p&lt;/code&gt; tags) matches events containing any of them. NIP-91 lets clients require events matching all specified tag values simultaneously, reducing bandwidth and enabling faster index operations. Multiple relay implementations already exist including nostr-rs-relay, satellite-node, worker-relay, and applesauce. Formerly numbered NIP-119.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;a href=&#34;https://github.com/nostr-protocol/nips/pull/2247&#34;&gt;NIP-30: Emoji Set Address in Tags&lt;/a&gt;&lt;/strong&gt;: Custom emoji tags in &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-30/&#34;&gt;NIP-30&lt;/a&gt; can now include an optional emoji set address. Clicking an emoji in a client can open the set it belongs to for bookmarking or browsing. Originated from the &lt;a href=&#34;https://github.com/purrgrammer/chachi&#34;&gt;Chachi&lt;/a&gt; (&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1gm7gw8q6akeft2pjt270we35vlff0v9g2fene6cxkz2h68q5hl6qls0fte&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;chachi&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1gm7…0fte&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;) client.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;a href=&#34;https://github.com/nostr-protocol/nips/pull/2111&#34;&gt;NIP-29: Add unallowpubkey and unbanpubkey&lt;/a&gt;&lt;/strong&gt;: Two new admin commands for &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-29/&#34;&gt;NIP-29&lt;/a&gt; group chat. &lt;code&gt;unallowpubkey&lt;/code&gt; removes a pubkey from the allowed list without banning them. &lt;code&gt;unbanpubkey&lt;/code&gt; lifts a ban without re-adding the pubkey to the member list. Previously, the only way to remove someone from the allowed list also banned them, and unbanning required re-adding the user as a member.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Open PRs and Discussions:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;a href=&#34;https://github.com/nostr-protocol/nips/pull/2244&#34;&gt;NIP-A7: Spells&lt;/a&gt;&lt;/strong&gt; (opened Feb 27): Proposed by purrgrammer, spells are portable saved Nostr queries published as kind 777 events. A spell encodes a REQ or COUNT filter in structured tags (&lt;code&gt;k&lt;/code&gt; for kinds, &lt;code&gt;authors&lt;/code&gt; for pubkeys, &lt;code&gt;tag&lt;/code&gt; for arbitrary tag filters) with runtime variables: &lt;code&gt;$me&lt;/code&gt; resolves to the logged-in user&amp;#39;s pubkey, &lt;code&gt;$contacts&lt;/code&gt; expands to the user&amp;#39;s kind 3 follow list. Relative timestamps (&lt;code&gt;7d&lt;/code&gt;, &lt;code&gt;2w&lt;/code&gt;, &lt;code&gt;1mo&lt;/code&gt;) let spells define rolling time windows without hardcoded dates. Already implemented in &lt;a href=&#34;https://github.com/fiatjaf/nak&#34;&gt;nak&lt;/a&gt; (&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub180cvv07tjdrrgpa0j7j7tmnyl2yr6yr7l8j4s3evf6u64th6gkwsyjh6w6&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;fiatjaf&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub180c…h6w6&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;) and &lt;a href=&#34;https://github.com/purrgrammer/grimoire&#34;&gt;Grimoire&lt;/a&gt; (&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1eras6w483zu6ee8kewfdm97n72fdkfd4e8ujgch0d3jfycfflwhsytskz0&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;grimoire&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1era…skz0&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;), spells let users create, share, and subscribe to curated feeds that travel across clients.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;a href=&#34;https://github.com/nostr-protocol/nips/pull/2245&#34;&gt;NIP-59: Ephemeral Gift Wrap (kind 21059)&lt;/a&gt;&lt;/strong&gt; (opened Feb 27): Adds an ephemeral variant of &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-59/&#34;&gt;NIP-59&lt;/a&gt; gift wraps. Kind 21059 follows NIP-01 ephemeral semantics, so relays discard events after delivery. Proposed by ContextVM for MCP transport where message persistence is unnecessary.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;a href=&#34;https://github.com/nostr-protocol/nips/pull/2246&#34;&gt;ContextVM: MCP JSON-RPC over Nostr&lt;/a&gt;&lt;/strong&gt; (opened Feb 27): Specifies how to transport Model Context Protocol messages over Nostr using ephemeral kind 25910 events with &lt;code&gt;p&lt;/code&gt; and &lt;code&gt;e&lt;/code&gt; tags for addressing and correlation. Intentionally thin, deferring protocol detail to the &lt;a href=&#34;https://docs.contextvm.org&#34;&gt;ContextVM spec&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;a href=&#34;https://github.com/nostr-protocol/nips/pull/2238&#34;&gt;NIP-29: Audio/Video Live Spaces&lt;/a&gt;&lt;/strong&gt; (opened Feb 25, draft): fiatjaf&amp;#39;s draft extending &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-29/&#34;&gt;NIP-29&lt;/a&gt; groups with live audio and video. The proposal adds optional &lt;code&gt;livekit&lt;/code&gt; and &lt;code&gt;no-text&lt;/code&gt; tags to group metadata events. When a user wants to join a voice space, the client requests a JWT from the relay at &lt;code&gt;/.well-known/nip29/livekit/{groupId}&lt;/code&gt;. The relay checks group membership and issues a token with the user&amp;#39;s hex pubkey as the &lt;code&gt;sub&lt;/code&gt; claim, which is passed to &lt;a href=&#34;https://livekit.io/&#34;&gt;LiveKit&lt;/a&gt; for media transport. Voice room access inherits the group&amp;#39;s existing permission model, so relay-side membership rules govern who can speak. Being tested in Pyramid and Chachi.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;a href=&#34;https://github.com/nostr-protocol/nips/pull/2235&#34;&gt;Collaborative Event Ownership&lt;/a&gt;&lt;/strong&gt; (opened Feb 24): pablof7z proposes a pointer event (kind 39382) that declares a collaborative space by listing co-owner pubkeys in &lt;code&gt;p&lt;/code&gt; tags and a target event kind in a &lt;code&gt;k&lt;/code&gt; tag. Any listed owner can publish events of that kind with the same &lt;code&gt;d&lt;/code&gt; tag, and clients resolve the current state by querying all owners and taking the most recent event. Co-authorship attribution only displays when a verifiable &lt;code&gt;a&lt;/code&gt; tag back-references the pointer and the author appears in its &lt;code&gt;p&lt;/code&gt; tags, preventing spoofed claims. This enables shared wiki pages and co-authored resources without assigning control to a single keypair.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;a href=&#34;https://github.com/nostr-protocol/nips/pull/2234&#34;&gt;NIP-09: Cascading Deletion of Reposts&lt;/a&gt;&lt;/strong&gt; (opened Feb 24): When an original author deletes a note, relays should also delete any kind 6 or kind 16 reposts referencing it. Motivated by privacy concerns: reposts can preserve accidentally leaked information after the author deletes the source. The change is relay-side only, requiring no client modifications.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;a href=&#34;https://github.com/nostr-protocol/nips/pull/2233&#34;&gt;NIP-07: peekPublicKey&lt;/a&gt;&lt;/strong&gt; (opened Feb 23): Adds a &lt;code&gt;peekPublicKey()&lt;/code&gt; method to &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-07/&#34;&gt;NIP-07&lt;/a&gt; browser extensions. Unlike &lt;code&gt;getPublicKey()&lt;/code&gt;, it returns the current pubkey without prompting for user confirmation, enabling silent auto-login when the user has auto-login enabled.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;a href=&#34;https://github.com/nostr-protocol/nips/pull/2248&#34;&gt;NIP-BB: Book&lt;/a&gt;&lt;/strong&gt; (opened Feb 28, draft): Defines four addressable event kinds (30300-30303) for structured book publishing on Nostr. A Cover event holds root metadata including title, cover image, license via &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-32/&#34;&gt;NIP-32&lt;/a&gt; (Labeling) labels, and language code. An Index event maps each chapter to its position using base62 fractional indexing, which lets authors insert new chapters between existing ones without renumbering. Chapter events act as structural headers with optional images, while Episode events carry the actual prose capped at 30,000 characters with positioned image tags. Reviews use Zaps on Cover events with the Zap description as review text.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;a href=&#34;https://github.com/nostr-protocol/nips/pull/2242&#34;&gt;NIP-54: Switch from Asciidoc to Djot&lt;/a&gt;&lt;/strong&gt; (opened Feb 26): Following the &lt;a href=&#34;https://nostrcompass.org/en/newsletters/2025-12-31-newsletter/&#34;&gt;d-tag internationalization fix&lt;/a&gt; in December, this PR proposes replacing &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-54/&#34;&gt;NIP-54&lt;/a&gt; wiki&amp;#39;s Asciidoc markup format with &lt;a href=&#34;https://djot.net/&#34;&gt;Djot&lt;/a&gt;, adding a rationale section and wikilink examples for non-Latin scripts.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;a href=&#34;https://github.com/nostr-protocol/nips/pull/2240&#34;&gt;NIP-66: Defensive Measures&lt;/a&gt;&lt;/strong&gt; (opened Feb 26): Based on learnings from the &lt;a href=&#34;https://nostrcompass.org/en/newsletters/2026-03-04-newsletter/#outbox-model-under-the-microscope&#34;&gt;nostrability/outbox&lt;/a&gt; benchmarks, adds explicit callouts for &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-66/&#34;&gt;NIP-66&lt;/a&gt; edge cases. A companion &lt;a href=&#34;https://github.com/nostr-protocol/nips/pull/2241&#34;&gt;PR #2241&lt;/a&gt; defines output tags for SSL, geolocation, network, and connectivity checks.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;strong&gt;NIP-C1: Cryptographic Identity Proofs&lt;/strong&gt; (wiki entry, kind 30817): Proposes kind 30509 events that cryptographically link APK signing certificates to Nostr profiles. The proof works by signing a canonical message containing the Nostr pubkey with the certificate&amp;#39;s private key (supporting ECDSA, RSA PKCS1v15, Ed25519, and other standard algorithms), then publishing the signature in a kind 30509 event signed with the Nostr key. Verifiers can confirm that the person who controls an app&amp;#39;s Android signing certificate also controls the Nostr pubkey claiming to publish it. Proofs expire after one year by default and can be explicitly revoked. Implemented in the &lt;a href=&#34;https://github.com/zapstore/zapstore&#34;&gt;Zapstore&lt;/a&gt; (&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub10r8xl2njyepcw2zwv3a6dyufj4e4ajx86hz6v4ehu4gnpupxxp7stjt2p8&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Zapstore&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub10r8…t2p8&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;) toolchain.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;strong&gt;NIP-31402: SARA Revenue Share Offering Registry&lt;/strong&gt; (wiki entry, kind 30817): Defines kind 31402 addressable events for publishing Simple Autonomous Revenue Agreement (SARA) offerings on Nostr relays. Issuers advertise Lightning-settled revenue share terms including pool share percentage, payout trigger, threshold in sats, term length, and tiered pricing. Agents and humans can discover offerings across relays and subscribe autonomously without a central platform. The kind number mirrors kind 30402 (L402 Service Registry, published by the same author as a companion wiki entry) since SARA represents the return leg of the L402 payment relationship.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&#34;open-prs-and-project-updates-2&#34;&gt;Open PRs and Project Updates&lt;/h2&gt;

&lt;h3 id=&#34;damus-nip-89-https-nostrcompass-org-en-topics-nip-89-recommended-application-handlers-2&#34;&gt;Damus: &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-89/&#34;&gt;NIP-89&lt;/a&gt; (Recommended Application Handlers)&lt;/h3&gt;

&lt;p&gt;&lt;a href=&#34;https://github.com/damus-io/damus/pull/3337&#34;&gt;PR #3337&lt;/a&gt; implements NIP-89 client tag support for &lt;a href=&#34;https://github.com/damus-io/damus&#34;&gt;Damus&lt;/a&gt; (&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub18m76awca3y37hkvuneavuw6pjj4525fw90necxmadrvjg0sdy6qsngq955&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;damus&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub18m7…q955&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;). The app now emits a client tag on all posting paths (main app, share extension, highlighter, drafts) and displays &amp;#34;via ClientName&amp;#34; beside timestamps when other apps include their tags. A Privacy toggle in Appearance settings lets users disable tag emission. &lt;a href=&#34;https://github.com/damus-io/damus/pull/3652&#34;&gt;PR #3652&lt;/a&gt; adds a Storage section in Settings with an interactive pie chart breaking down NostrDB and Kingfisher cache disk usage with export support.&lt;/p&gt;

&lt;p&gt;Open: &lt;a href=&#34;https://github.com/damus-io/damus/pull/3657&#34;&gt;PR #3657&lt;/a&gt; adds &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-65/&#34;&gt;NIP-65&lt;/a&gt; relay fallback for quoted notes. When an inline &lt;code&gt;nevent&lt;/code&gt; includes an author pubkey but no relay hints and the note is missing from the user&amp;#39;s pool, Damus fetches the author&amp;#39;s kind 10002 relay list and retries from their write relays.&lt;/p&gt;

&lt;h3 id=&#34;amethyst-nip-39-https-nostrcompass-org-en-topics-nip-39-external-identities-nip-c0-nip-66-https-nostrcompass-org-en-topics-nip-66-2&#34;&gt;Amethyst: &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-39/&#34;&gt;NIP-39&lt;/a&gt; (External Identities), NIP-C0, &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-66/&#34;&gt;NIP-66&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&#34;https://github.com/vitorpamplona/amethyst&#34;&gt;Amethyst&lt;/a&gt; (&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub142gywvjkq0dv6nupggyn2euhx4nduwc7yz5f24ah9rpmunr2s39se3xrj0&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Amethyst&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub142g…xrj0&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;) merged a wave of NIP implementations across 28 PRs. External identity claims now publish as dedicated kind 10011 events under &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-39/&#34;&gt;NIP-39&lt;/a&gt; (&lt;a href=&#34;https://github.com/vitorpamplona/amethyst/pull/1747&#34;&gt;PR #1747&lt;/a&gt;), separating social identity from kind 0 metadata with backward-compatible fallback. Code snippet support via NIP-C0 (&lt;a href=&#34;https://github.com/vitorpamplona/amethyst/pull/1744&#34;&gt;PR #1744&lt;/a&gt;) adds kind 1337 events with accessors for language, extension, runtime, license, and dependencies. The &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-66/&#34;&gt;NIP-66&lt;/a&gt; relay monitoring implementation (&lt;a href=&#34;https://github.com/vitorpamplona/amethyst/pull/1742&#34;&gt;PR #1742&lt;/a&gt;) covers both event kinds with full tag parsing for RTT metrics, network type, supported NIPs, and geohash.&lt;/p&gt;

&lt;p&gt;Encrypted DMs arrived on Amethyst Desktop (&lt;a href=&#34;https://github.com/vitorpamplona/amethyst/pull/1710&#34;&gt;PR #1710&lt;/a&gt;) with a split-pane chat layout supporting both &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-04/&#34;&gt;NIP-04&lt;/a&gt; (Encrypted Direct Messages) and &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-17/&#34;&gt;NIP-17&lt;/a&gt; (Private Direct Messages). A new relay feed screen (&lt;a href=&#34;https://github.com/vitorpamplona/amethyst/pull/1733&#34;&gt;PR #1733&lt;/a&gt;) lets users browse posts from a specific relay with follow/unfollow functionality. Open: censorship-resistant NIP-05 verification (&lt;a href=&#34;https://github.com/vitorpamplona/amethyst/pull/1734&#34;&gt;PR #1734&lt;/a&gt;) adds a parallel verification path for &lt;code&gt;.bit&lt;/code&gt; identifiers that resolves against the Namecoin blockchain instead of HTTP DNS. When Amethyst detects a &lt;code&gt;.bit&lt;/code&gt; suffix in a NIP-05 field, it queries an ElectrumX-NMC server for the name&amp;#39;s transaction history, parses the &lt;code&gt;NAME_UPDATE&lt;/code&gt; script from the latest output to extract the Nostr pubkey, and rejects names older than 36,000 blocks (Namecoin&amp;#39;s expiry window). ElectrumX connections route through SOCKS5 when Tor is enabled, with dynamic server selection between clearnet and &lt;code&gt;.onion&lt;/code&gt; endpoints. An LRU cache with a one-hour TTL prevents repeated blockchain queries.&lt;/p&gt;

&lt;h3 id=&#34;notedeck-outbox-architecture-2&#34;&gt;Notedeck: Outbox Architecture&lt;/h3&gt;

&lt;p&gt;&lt;a href=&#34;https://github.com/damus-io/notedeck/pull/1303&#34;&gt;PR #1303&lt;/a&gt; migrates &lt;a href=&#34;https://github.com/damus-io/notedeck&#34;&gt;Notedeck&lt;/a&gt; (&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub18m76awca3y37hkvuneavuw6pjj4525fw90necxmadrvjg0sdy6qsngq955&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;damus&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub18m7…q955&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;) from ad-hoc relay pool management to a centralized outbox model with account-scoped subscriptions. The Messages module now publishes a default DM relay list if none exists and routes DMs to recipients&amp;#39; preferred relays per kind 10050.&lt;/p&gt;

&lt;h3 id=&#34;pika-per-group-profiles-and-tutorial-feed-2&#34;&gt;Pika: Per-Group Profiles and Tutorial Feed&lt;/h3&gt;

&lt;p&gt;&lt;a href=&#34;https://github.com/sledtools/pika&#34;&gt;Pika&lt;/a&gt;, the Marmot-encrypted messaging app available on iOS and Android with a desktop build, gained per-group profiles (&lt;a href=&#34;https://github.com/sledtools/pika/pull/368&#34;&gt;PR #368&lt;/a&gt;). Users can now set a separate display name and picture for each group chat, along with a custom bio. These profiles publish as encrypted kind 0 events inside the Marmot group, invisible to anyone outside it, with a fallback to the user&amp;#39;s global Nostr profile when no group-specific profile is set. When new members join, the admin rebroadcasts all stored group profiles and each member republishes their own on commit. Profile pictures are Marmot-media-encrypted before Blossom upload. The PR includes 16 new unit tests and exposes the feature both through a CLI command (&lt;code&gt;update-group-profile&lt;/code&gt;) and the UI.&lt;/p&gt;

&lt;p&gt;A new &lt;code&gt;pika-news&lt;/code&gt; web app (&lt;a href=&#34;https://github.com/sledtools/pika/pull/401&#34;&gt;PR #401&lt;/a&gt;) monitors Pika&amp;#39;s own GitHub PRs and auto-generates step-by-step tutorial walkthroughs from PR diffs, publishing them as server-rendered pages with &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-07/&#34;&gt;NIP-07&lt;/a&gt; authentication. Users can discuss specific tutorials in real time through Nostr-authenticated chat.&lt;/p&gt;

&lt;h3 id=&#34;divine-embeddable-widgets-and-video-replies-2&#34;&gt;diVine: Embeddable Widgets and Video Replies&lt;/h3&gt;

&lt;p&gt;&lt;a href=&#34;https://github.com/divinevideo/divine-mobile&#34;&gt;diVine&lt;/a&gt; (&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1wmr34t36fy03m8hvgl96zl3znndyzyaqhwmwdtshwmtkg03fetaqhjg240&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;rabble&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1wmr…g240&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;), the Nostr-native video sharing platform, merged 132 PRs in ten days. Embeddable iframe widgets (&lt;a href=&#34;https://github.com/divinevideo/divine-mobile/pull/1843&#34;&gt;PR #1843&lt;/a&gt;) provide a self-contained &lt;code&gt;/embed?npub=...&lt;/code&gt; page that renders a user&amp;#39;s profile and latest videos. Video reply functionality (&lt;a href=&#34;https://github.com/divinevideo/divine-mobile/pull/1915&#34;&gt;PR #1915&lt;/a&gt;), gated behind a feature flag, uses Kind 1111 comments (&lt;a href=&#34;https://nostrcompass.org/en/topics/nip-22/&#34;&gt;NIP-22&lt;/a&gt;) with &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-92/&#34;&gt;NIP-92&lt;/a&gt; (Media Attachments) imeta metadata. Bluesky-inspired three-way content filters (&lt;a href=&#34;https://github.com/divinevideo/divine-mobile/pull/1797&#34;&gt;PR #1797&lt;/a&gt;) offer Show/Warn/Hide controls across 17 &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-32/&#34;&gt;NIP-32&lt;/a&gt; content warning categories.&lt;/p&gt;

&lt;h3 id=&#34;strfry-req-filter-validation-2&#34;&gt;strfry: REQ Filter Validation&lt;/h3&gt;

&lt;p&gt;&lt;a href=&#34;https://github.com/hoytech/strfry/pull/163&#34;&gt;PR #163&lt;/a&gt; adds configurable REQ filter validation to &lt;a href=&#34;https://github.com/hoytech/strfry&#34;&gt;strfry&lt;/a&gt; (&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1yxprsscnjw2e6myxz73mmzvnqw5kvzd5ffjya9ecjypc5l0gvgksh8qud4&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Doug Hoyte&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1yxp…qud4&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;), the C&#43;&#43; Nostr relay. Operators can set maximum filters per REQ, required author or tag presence, allowed kind whitelists, and per-filter kind limits. The feature targets NWC relay deployments that need strict filter enforcement. Open: &lt;a href=&#34;https://github.com/hoytech/strfry/pull/173&#34;&gt;PR #173&lt;/a&gt; adds optional zstd compression for event payloads at ingest time.&lt;/p&gt;

&lt;h3 id=&#34;rust-nostr-nip-62-https-nostrcompass-org-en-topics-nip-62-request-to-vanish-2&#34;&gt;rust-nostr: &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-62/&#34;&gt;NIP-62&lt;/a&gt; Request to Vanish&lt;/h3&gt;

&lt;p&gt;&lt;a href=&#34;https://github.com/rust-nostr/nostr&#34;&gt;rust-nostr&lt;/a&gt; (&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1drvpzev3syqt0kjrls50050uzf25gehpz9vgdw08hvex7e0vgfeq0eseet&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Yuki Kishimoto&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1drv…seet&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;), the Rust Nostr protocol library, added &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-62/&#34;&gt;NIP-62&lt;/a&gt; (Request to Vanish) support across all three database backends: &lt;a href=&#34;https://github.com/rust-nostr/nostr/pull/1268&#34;&gt;LMDB&lt;/a&gt;, &lt;a href=&#34;https://github.com/rust-nostr/nostr/pull/1270&#34;&gt;SQLite&lt;/a&gt;, and &lt;a href=&#34;https://github.com/rust-nostr/nostr/pull/1272&#34;&gt;in-memory&lt;/a&gt;. The LMDB implementation includes configurable options to enable or disable &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-09/&#34;&gt;NIP-09&lt;/a&gt; and NIP-62 enforcement per deployment.&lt;/p&gt;

&lt;h3 id=&#34;ndk-collaborative-events-and-nip-46-timeout-2&#34;&gt;NDK: Collaborative Events and NIP-46 Timeout&lt;/h3&gt;

&lt;p&gt;&lt;a href=&#34;https://github.com/nostr-dev-kit/ndk&#34;&gt;NDK&lt;/a&gt; (&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;PABLOF7z&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1l2v…ajft&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;), the Nostr Development Kit for JavaScript/TypeScript, merged &lt;a href=&#34;https://github.com/nostr-dev-kit/ndk/pull/380&#34;&gt;PR #380&lt;/a&gt; introducing &lt;code&gt;NDKCollaborativeEvent&lt;/code&gt; for multi-author collaborative documents using an addressable pointer event (kind 39382) that defines authorized authors. A configurable timeout for &lt;code&gt;NDKNip46Signer&lt;/code&gt; (&lt;a href=&#34;https://github.com/nostr-dev-kit/ndk/pull/381&#34;&gt;PR #381&lt;/a&gt;) prevents &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-46/&#34;&gt;NIP-46&lt;/a&gt; remote signing operations from hanging indefinitely when a bunker does not respond.&lt;/p&gt;

&lt;h3 id=&#34;tenex-agent-categorization-and-pubkey-gating-2&#34;&gt;TENEX: Agent Categorization and Pubkey Gating&lt;/h3&gt;

&lt;p&gt;&lt;a href=&#34;https://github.com/tenex-chat/tenex&#34;&gt;TENEX&lt;/a&gt; (&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;PABLOF7z&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1l2v…ajft&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;), the Nostr-native AI agent orchestration platform, merged two security-related PRs. TIP-01 role-based agent categorization (&lt;a href=&#34;https://github.com/tenex-chat/tenex/pull/91&#34;&gt;PR #91&lt;/a&gt;) maps agent categories (principal, orchestrator, worker, advisor, auditor) to automated tool restrictions via a denied-tools map. Front-door pubkey gating (&lt;a href=&#34;https://github.com/tenex-chat/tenex/pull/87&#34;&gt;PR #87&lt;/a&gt;) ensures only events from whitelisted or backend-signed pubkeys are routed alongside known agents; unknown pubkeys are silently dropped with OpenTelemetry spans for audit.&lt;/p&gt;

&lt;h3 id=&#34;zap-cooking-membership-dashboard-2&#34;&gt;Zap Cooking: Membership Dashboard&lt;/h3&gt;

&lt;p&gt;&lt;a href=&#34;https://github.com/zapcooking/frontend&#34;&gt;Zap Cooking&lt;/a&gt; (&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1xxdd8eusvdxmaph3fkuu9x2mymhrcc3ghe2l38zv0l4f4nqp659qskkt7a&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;ZapCooking&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1xxd…kt7a&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;), the Nostr-based recipe sharing platform, merged 25 PRs and 85 commits in ten days. A membership dashboard (&lt;a href=&#34;https://github.com/zapcooking/frontend/pull/228&#34;&gt;PR #228&lt;/a&gt;) shows subscription status with expiration dates and manage/upgrade options, re-enables feature gates for Sous Chef and Zappy tiers with both client-side and server-side checks, and standardizes tier naming across 26 files. Two-phase group message loading (&lt;a href=&#34;https://github.com/zapcooking/frontend/pull/227&#34;&gt;PR #227&lt;/a&gt;) provides a fast 3-day initial fetch for instant display followed by a background 40-day backfill.&lt;/p&gt;

&lt;p&gt;Wallet mnemonic storage moved from pubkey-derived encryption to &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-44/&#34;&gt;NIP-44&lt;/a&gt; encrypt-to-self (&lt;a href=&#34;https://github.com/zapcooking/frontend/pull/224&#34;&gt;PR #224&lt;/a&gt;), fixing a vulnerability where the old scheme derived its key from &lt;code&gt;SHA-256(pubkey)&lt;/code&gt;, which is effectively unencrypted since pubkeys are public. Existing wallets are silently migrated on first load. &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-29/&#34;&gt;NIP-29&lt;/a&gt; group chat gained unread indicators with red dot badges and invite-only access with kind 9009 invite codes (&lt;a href=&#34;https://github.com/zapcooking/frontend/pull/213&#34;&gt;PR #213&lt;/a&gt;). Link previews and Nostr event embeds now render in DMs and group messages (&lt;a href=&#34;https://github.com/zapcooking/frontend/pull/218&#34;&gt;PR #218&lt;/a&gt;). A Nostr backup section in Settings (&lt;a href=&#34;https://github.com/zapcooking/frontend/pull/210&#34;&gt;PR #210&lt;/a&gt;) stores follows and mute lists via &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-78/&#34;&gt;NIP-78&lt;/a&gt; (Application-specific Data) encrypted storage with rotating 3-slot versioning. Startup performance improved through deferred notification services, lazy DOM rendering via IntersectionObserver (reducing DOM nodes from ~15,000 to ~3,000 on a 200-event feed), and extended outbox cache TTLs (&lt;a href=&#34;https://github.com/zapcooking/frontend/pull/208&#34;&gt;PR #208&lt;/a&gt;). A customizable print recipe modal (&lt;a href=&#34;https://github.com/zapcooking/frontend/pull/205&#34;&gt;PR #205&lt;/a&gt;) lets users toggle which sections to include with a live preview. &lt;a href=&#34;https://github.com/BrantaOps/branta-core&#34;&gt;Branta SDK&lt;/a&gt; integration (&lt;a href=&#34;https://github.com/zapcooking/frontend/pull/222&#34;&gt;PR #222&lt;/a&gt;) adds verification guardrails for POST and GET requests.&lt;/p&gt;

&lt;h3 id=&#34;keep-rust-driven-state-migration-2&#34;&gt;Keep: Rust-Driven State Migration&lt;/h3&gt;

&lt;p&gt;&lt;a href=&#34;https://github.com/privkeyio/keep-android&#34;&gt;Keep&lt;/a&gt; (&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1h3fzzzeq60acjvnyvw34rpn5clkaueteffmkt3ln4ygekg9lcm0qhw96sj&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;williamk⚡santiago🔑☢️&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1h3f…96sj&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;), the Nostr-based private key manager for Android, merged &lt;a href=&#34;https://github.com/privkeyio/keep-android/pull/178&#34;&gt;PR #178&lt;/a&gt;, deleting four Kotlin configuration stores in favor of Rust-driven shared state from the keep-mobile layer. A 10-second polling loop was replaced with push-based &lt;code&gt;KeepStateCallback&lt;/code&gt; from Rust. &lt;a href=&#34;https://github.com/privkeyio/keep-android/pull/179&#34;&gt;PR #179&lt;/a&gt; adds encrypted backup and restore with passphrase protection.&lt;/p&gt;

&lt;h3 id=&#34;mostro-mobile-dispute-chat-encryption-2&#34;&gt;Mostro Mobile: Dispute Chat Encryption&lt;/h3&gt;

&lt;p&gt;&lt;a href=&#34;https://github.com/MostroP2P/mobile&#34;&gt;Mostro Mobile&lt;/a&gt; (&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1m0str0d7z2ww8rdh20t2n9lx520xjwhaq24p68umqp06wwrwtsnqen40un&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Mostro&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1m0s…40un&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;), the mobile client for the Mostro P2P Bitcoin trading platform, shipped a two-phase migration of dispute chat encryption. The first step (&lt;a href=&#34;https://github.com/MostroP2P/mobile/pull/495&#34;&gt;PR #495&lt;/a&gt;) switches from mostro-specific wrapping to shared key encryption derived from the admin&amp;#39;s pubkey. Building on that, &lt;a href=&#34;https://github.com/MostroP2P/mobile/pull/501&#34;&gt;PR #501&lt;/a&gt; unifies the message model with &lt;code&gt;NostrEvent&lt;/code&gt; and stores gift wrap events encrypted on disk, consistent with the peer-to-peer chat pattern. A BIP-340 signature fix (&lt;a href=&#34;https://github.com/MostroP2P/mobile/pull/496&#34;&gt;PR #496&lt;/a&gt;) overrides the bip340 dependency to 0.2.0, resolving a &lt;code&gt;bigToBytes()&lt;/code&gt; padding bug that caused 1-2% of Schnorr signatures to be invalid and 100% failure for keys whose public key starts with &lt;code&gt;0x00&lt;/code&gt;. Order Details now shows human-readable status labels instead of raw protocol values, localized across English, Spanish, Italian, and French (&lt;a href=&#34;https://github.com/MostroP2P/mobile/pull/502&#34;&gt;PR #502&lt;/a&gt;). HalCash was added and SEPA removed as a payment method (&lt;a href=&#34;https://github.com/MostroP2P/mobile/pull/493&#34;&gt;PR #493&lt;/a&gt;), since SEPA transfers can exceed 24 hours (SEPA Instant remains).&lt;/p&gt;

&lt;p&gt;On the server side, &lt;a href=&#34;https://github.com/MostroP2P/mostro&#34;&gt;Mostro&lt;/a&gt; (&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1m0str0d7z2ww8rdh20t2n9lx520xjwhaq24p68umqp06wwrwtsnqen40un&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Mostro&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1m0s…40un&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;) fixed dispute session restore to include the initiator field (&lt;a href=&#34;https://github.com/MostroP2P/mostro/pull/599&#34;&gt;PR #599&lt;/a&gt;) and now automatically closes active disputes when a seller releases funds, publishing a settled Nostr event so admin clients see the resolution (&lt;a href=&#34;https://github.com/MostroP2P/mostro/pull/606&#34;&gt;PR #606&lt;/a&gt;).&lt;/p&gt;

&lt;h2 id=&#34;five-years-of-nostr-februaries-2&#34;&gt;Five Years of Nostr Februaries&lt;/h2&gt;

&lt;p&gt;&lt;a href=&#34;https://nostrcompass.org/en/newsletters/2026-01-28-newsletter/#five-years-of-nostr-januaries&#34;&gt;Last month&amp;#39;s newsletter&lt;/a&gt; traced Nostr&amp;#39;s January milestones from early development through the Damus breakout to security infrastructure in 2026. This retrospective covers what happened each February from 2021 through 2026.&lt;/p&gt;

&lt;h3 id=&#34;february-2021-the-rewrite-2&#34;&gt;February 2021: The Rewrite&lt;/h3&gt;

&lt;p&gt;Three months into its existence, Nostr&amp;#39;s February produced the protocol&amp;#39;s most consequential early change. On February 14-15, fiatjaf &lt;a href=&#34;https://github.com/nostr-protocol/nostr/commit/33a1a70&#34;&gt;rewrote NIP-01&lt;/a&gt;, replacing the original message format with the EVENT/REQ/CLOSE model that the protocol still uses. Before this rewrite, clients and relays communicated through a simpler structure. Separating event publishing (EVENT) from subscription management (REQ/CLOSE) enabled relay-side filtering that would prove essential for scaling.&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;https://nostrcompass.org/en/topics/nip-04/&#34;&gt;NIP-04&lt;/a&gt; arrived the same month, adding encrypted direct messages using shared secrets derived from Diffie-Hellman key exchange over secp256k1. Its encryption was basic (AES-256-CBC) and would later be replaced by &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-44/&#34;&gt;NIP-44&lt;/a&gt;&amp;#39;s audited cryptography, but it gave the handful of early users their first private communication channel on the protocol.&lt;/p&gt;

&lt;p&gt;Tooling expanded with &lt;a href=&#34;https://github.com/fiatjaf/noscl&#34;&gt;noscl&lt;/a&gt; (&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub180cvv07tjdrrgpa0j7j7tmnyl2yr6yr7l8j4s3evf6u64th6gkwsyjh6w6&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;fiatjaf&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub180c…h6w6&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;), a Go command-line client for terminal-based relay interaction, and futurepaul started &lt;a href=&#34;https://github.com/futurepaul/nostr-rs&#34;&gt;nostr-rs&lt;/a&gt;, an early Rust implementation. The entire network ran on two or three relays, coordinated through a &lt;a href=&#34;https://t.me/nostr_protocol&#34;&gt;Telegram group&lt;/a&gt;, with roughly seven active contributors.&lt;/p&gt;

&lt;h3 id=&#34;february-2022-building-momentum-2&#34;&gt;February 2022: Building Momentum&lt;/h3&gt;

&lt;p&gt;The &lt;a href=&#34;https://news.ycombinator.com/item?id=29749061&#34;&gt;Hacker News post&lt;/a&gt; from December 31, 2021 continued to draw developers into February. The &lt;a href=&#34;https://github.com/nostr-protocol/nostr&#34;&gt;nostr-protocol/nostr&lt;/a&gt; repository (the formal &lt;a href=&#34;https://github.com/nostr-protocol/nips&#34;&gt;NIPs repository&lt;/a&gt; would not exist until May 2022) received six pull requests in February, including NIP-13 (Proof of Work) from vinliao, NIP-14 (Reputation) from fiatjaf, NIP-15 (Resource Relations) from Cameri, and &lt;a href=&#34;https://github.com/nostr-protocol/nostr/pull/75&#34;&gt;NIP-17&lt;/a&gt; (Git Updates Over Nostr) from melvincarvalho. The NIP number was later reassigned to Private Direct Messages; git collaboration on Nostr continued separately through what became &lt;a href=&#34;https://gitworkshop.dev&#34;&gt;gitworkshop.dev&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Greg Heartsfield&amp;#39;s &lt;a href=&#34;https://github.com/scsibug/nostr-rs-relay&#34;&gt;nostr-rs-relay&lt;/a&gt; was the month&amp;#39;s workhorse with 34 commits and three releases. Version 0.5.0 on February 12 added &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-05/&#34;&gt;NIP-05&lt;/a&gt; verified user publishing limits. Versions 0.5.1 and 0.5.2 followed over the next two weeks, and the relay handled the bulk of the network&amp;#39;s traffic alone.&lt;/p&gt;

&lt;p&gt;Robert C. Martin (Uncle Bob) was building &lt;a href=&#34;https://github.com/unclebob/more-speech&#34;&gt;more-speech&lt;/a&gt; (&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub19mun7qwdyjf7qs3456u8kyxncjn5u2n7klpu4utgy68k4aenzj6synjnft&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;unclebobmartin&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub19mu…jnft&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;), a Clojure desktop client, logging 69 commits between January 18 and the end of February. His involvement brought attention from the broader software engineering community. fiatjaf&amp;#39;s &lt;a href=&#34;https://github.com/fiatjaf/nos2x&#34;&gt;nos2x&lt;/a&gt; browser extension shipped &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-04/&#34;&gt;NIP-04&lt;/a&gt; decrypt support and relay preference policies in February, implementing the &lt;code&gt;window.nostr&lt;/code&gt; interface (&lt;a href=&#34;https://nostrcompass.org/en/topics/nip-07/&#34;&gt;NIP-07&lt;/a&gt;) that web clients still use for key delegation.&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;https://github.com/fiatjaf/branle&#34;&gt;Branle&lt;/a&gt; (&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub180cvv07tjdrrgpa0j7j7tmnyl2yr6yr7l8j4s3evf6u64th6gkwsyjh6w6&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;fiatjaf&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub180c…h6w6&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;), still the primary web client, gained &lt;code&gt;web&#43;nostr&lt;/code&gt; protocol handler registration on February 13, an early attempt at deep linking between Nostr applications. &lt;a href=&#34;https://github.com/nbd-wtf/nostr-tools&#34;&gt;nostr-tools&lt;/a&gt; (&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub180cvv07tjdrrgpa0j7j7tmnyl2yr6yr7l8j4s3evf6u64th6gkwsyjh6w6&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;fiatjaf&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub180c…h6w6&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;) tightened NIP-05 validation. &lt;a href=&#34;https://github.com/nbd-wtf/go-nostr&#34;&gt;go-nostr&lt;/a&gt; (&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1937vv2nf06360qn9y8el6d8sevnndy7tuh5nzre4gj05xc32tnwqauhaj6&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;mattn&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1937…haj6&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;) added NIP-04 encrypted DM support and NIP-12 (Generic Tag Queries) parsing across 11 commits. The network operated on roughly 7-15 relays with an active user base likely in the low hundreds. Damus and Nostream did not yet exist and would not appear until April 2022.&lt;/p&gt;

&lt;h3 id=&#34;february-2023-international-attention-2&#34;&gt;February 2023: International Attention&lt;/h3&gt;

&lt;p&gt;February 2023 brought Nostr its largest wave of public attention. &lt;a href=&#34;https://github.com/damus-io/damus&#34;&gt;Damus&lt;/a&gt;, the iOS client by William Casarin, had been &lt;a href=&#34;https://www.coindesk.com/tech/2023/02/01/decentralized-social-media-project-nostrs-damus-gets-listed-on-apple-app-store&#34;&gt;approved on Apple&amp;#39;s App Store on January 31&lt;/a&gt; after repeated rejections. By February 1 it reached the top 10 in U.S. Social Networking. Two days later, on February 2, &lt;a href=&#34;https://techcrunch.com/2023/02/02/damus-pulled-from-apples-app-store-in-china-after-two-days/&#34;&gt;Apple pulled Damus from China&amp;#39;s App Store&lt;/a&gt; reportedly at the request of the Cyberspace Administration of China.&lt;/p&gt;

&lt;p&gt;Major outlets including TechCrunch and CoinDesk covered the removal, amplifying awareness of both the app and the protocol. Unique public keys with metadata on nostr.directory crossed 300,000 by February 3. All relays were operated by enthusiasts paying out-of-pocket, and infrastructure scrambled to handle the load. Approximately 289 relays were tracked by early February, a number that continued to climb.&lt;/p&gt;

&lt;p&gt;The &lt;a href=&#34;https://github.com/nostr-protocol/nips&#34;&gt;NIPs repository&lt;/a&gt; logged 29 merged pull requests that month, the highest single-month count in the protocol&amp;#39;s history to that point. &lt;a href=&#34;https://github.com/nostr-protocol/nips/pull/224&#34;&gt;NIP-57&lt;/a&gt; (Lightning Zaps) and &lt;a href=&#34;https://github.com/nostr-protocol/nips/pull/220&#34;&gt;NIP-23&lt;/a&gt; (Long-form Content) both merged on February 13, adding Bitcoin micropayments and expanding Nostr beyond short posts in a single day. &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-65/&#34;&gt;NIP-65&lt;/a&gt; (Relay List Metadata) had merged a week earlier on February 7, enabling the outbox model that followed. &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-46/&#34;&gt;NIP-46&lt;/a&gt; (Nostr Connect) and &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-58/&#34;&gt;NIP-58&lt;/a&gt; (Badges) also landed before month&amp;#39;s end.&lt;/p&gt;

&lt;p&gt;The Human Rights Foundation &lt;a href=&#34;https://hrf.org/devfund2023q1&#34;&gt;granted $50,000 to William Casarin for Nostr and Damus development&lt;/a&gt; on February 21, one of the first institutional grants to a Nostr project. OpenSats had not yet launched its Nostr fund (that would come in &lt;a href=&#34;https://opensats.org/blog/nostr-grants-july-2023&#34;&gt;July 2023&lt;/a&gt;).&lt;/p&gt;

&lt;h3 id=&#34;february-2024-protocol-durability-2&#34;&gt;February 2024: Protocol Durability&lt;/h3&gt;

&lt;p&gt;February 2024 shifted focus from growth to protocol durability. &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-17/&#34;&gt;NIP-17&lt;/a&gt; (Private Direct Messages), open since the previous July, was working toward a replacement for the aging &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-04/&#34;&gt;NIP-04&lt;/a&gt; encryption using &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-44/&#34;&gt;NIP-44&lt;/a&gt;&amp;#39;s audited cryptography and &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-59/&#34;&gt;NIP-59&lt;/a&gt; gift wrapping. NIP-04 leaked metadata to relay operators, who could see sender-recipient pairs. NIP-17 hides sender identity behind disposable keypairs and merged that spring after a final round of review in March.&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;https://nostrcompass.org/en/topics/nip-29/&#34;&gt;NIP-29&lt;/a&gt; (Simple Groups) &lt;a href=&#34;https://github.com/nostr-protocol/nips/pull/566&#34;&gt;merged February 28&lt;/a&gt; after months of discussion, defining how relays can host moderated group chats with admin roles and access control. &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-92/&#34;&gt;NIP-92&lt;/a&gt; (imeta tags) merged February 1, standardizing how clients attach image dimensions and blurhash previews to media events.&lt;/p&gt;

&lt;p&gt;On February 16, the NIPs repository added &lt;a href=&#34;https://github.com/nostr-protocol/nips/commit/62c48eff&#34;&gt;BREAKING.md&lt;/a&gt;, a file tracking backward-incompatible changes to the protocol specification. Its creation acknowledged that Nostr had reached a maturity level where breaking changes needed formal documentation.&lt;/p&gt;

&lt;p&gt;Twenty-two pull requests merged that month. &lt;a href=&#34;https://github.com/cashubtc/npubcash-server&#34;&gt;npub.cash&lt;/a&gt; (&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1s4m06xdlu6fuhfhs4m3nhpp8xdpsdprwccdktckkzusfu8qzzprqnfpz6a&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;npubcash&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1s4m…pz6a&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;) launched as a Lightning address service letting any npub receive payments without running a server. An &lt;a href=&#34;https://arxiv.org/abs/2402.05709&#34;&gt;academic paper&lt;/a&gt; published February 8 found that 95% of free-to-use relays could not cover operational costs through donations, with 35% of paid relays charging admission fees below 1,000 sats (roughly $0.45 at the time).&lt;/p&gt;

&lt;h3 id=&#34;february-2025-infrastructure-growth-2&#34;&gt;February 2025: Infrastructure Growth&lt;/h3&gt;

&lt;p&gt;February 2025 produced 28 merged pull requests to the NIPs repository. A &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-62/&#34;&gt;Right to Vanish&lt;/a&gt; NIP merged February 19, defining how users can request deletion of their data from relays in response to regulatory questions around data portability and user control.&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;https://nostrcompass.org/en/topics/nip-60/&#34;&gt;NIP-60&lt;/a&gt; (Cashu Wallet) and NIP-61 (Nutzaps) received simplification updates, streamlining the ecash token storage format. A q-tag (quote tag) rollout continued across multiple NIPs, standardizing how events reference other events for quoting and threading.&lt;/p&gt;

&lt;p&gt;Client releases marked steady progress. &lt;a href=&#34;https://github.com/damus-io/notedeck&#34;&gt;Notedeck&lt;/a&gt; v0.3.0 alpha shipped on the last day of January, with adoption continuing into February. Primal v2.1 followed on February 7, and &lt;a href=&#34;https://github.com/0ceanSlim/grain&#34;&gt;GRAIN&lt;/a&gt; (&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1zmc6qyqdfnllhnzzxr5wpepfpnzcf8q6m3jdveflmgruqvd3qa9sjv7f60&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;OceanSlim&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1zmc…7f60&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;) v0.3.0, a Go relay implementation, released on February 21.&lt;/p&gt;

&lt;p&gt;NOSTRLDN v5 brought the London Nostr community together for its fifth meetup. A DVMCP bridge connected Nostr&amp;#39;s Data Vending Machines (&lt;a href=&#34;https://nostrcompass.org/en/topics/nip-90/&#34;&gt;NIP-90&lt;/a&gt;) with the Model Context Protocol, prefiguring the AI agent integration work that arrived the following month.&lt;/p&gt;

&lt;h3 id=&#34;february-2026-beyond-social-media-2&#34;&gt;February 2026: Beyond Social Media&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;February 2026 activity is drawn from Nostr Compass issues &lt;a href=&#34;https://nostrcompass.org/en/newsletters/2026-02-04-newsletter/&#34;&gt;#8&lt;/a&gt; through &lt;a href=&#34;https://nostrcompass.org/en/newsletters/2026-02-25-newsletter/&#34;&gt;#11&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;February 2026 produced the broadest range of application-layer development in any single Nostr month. &lt;a href=&#34;https://github.com/MostroP2P/mostro&#34;&gt;Mostro&lt;/a&gt; shipped its &lt;a href=&#34;https://nostrcompass.org/en/newsletters/2026-02-11-newsletter/#mostro-ships-first-public-beta&#34;&gt;first public beta&lt;/a&gt; for decentralized peer-to-peer Bitcoin trading, and &lt;a href=&#34;https://github.com/zapstore/zapstore&#34;&gt;Zapstore&lt;/a&gt; reached &lt;a href=&#34;https://nostrcompass.org/en/newsletters/2026-02-11-newsletter/#zapstore-v100&#34;&gt;1.0 stable&lt;/a&gt; after months in release candidate testing. &lt;a href=&#34;https://nostrcompass.org/en/newsletters/2026-02-25-newsletter/#white-noise-v030&#34;&gt;White Noise v0.3.0&lt;/a&gt; delivered real-time &lt;a href=&#34;https://nostrcompass.org/en/topics/mls/&#34;&gt;Marmot&lt;/a&gt;-encrypted messaging with Amber signer support and over 160 merged improvements.&lt;/p&gt;

&lt;p&gt;Competing AI agent proposals from pablof7z (NIP-AE for agent workflows, NIP-AD for MCP server announcements) and joelklabo (AI Agent Messages) arrived alongside a &lt;a href=&#34;https://nostrcompass.org/en/newsletters/2026-02-25-newsletter/#nip-updates&#34;&gt;DVM Agent Coordination proposal&lt;/a&gt; extending &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-90/&#34;&gt;NIP-90&lt;/a&gt;. &lt;a href=&#34;https://nostrcompass.org/en/newsletters/2026-02-25-newsletter/#contextvm-mcp-over-nostr&#34;&gt;ContextVM&lt;/a&gt; shipped SDK improvements connecting the Model Context Protocol to Nostr transport. &lt;a href=&#34;https://nostrcompass.org/en/newsletters/2026-02-25-newsletter/#burrow-mls-messaging-for-ai-agents&#34;&gt;Burrow&lt;/a&gt; (&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub18ams6ewn5aj2n3wt2qawzglx9mr4nzksxhvrdc4gzrecw7n5tvjqctp424&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Derek Ross&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub18am…p424&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;) added &lt;a href=&#34;https://nostrcompass.org/en/topics/mls/&#34;&gt;Marmot&lt;/a&gt;-encrypted messaging for both AI agents and humans, extending Nostr&amp;#39;s identity and relay infrastructure into machine-to-machine communication.&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;https://nostrcompass.org/en/newsletters/2026-02-25-newsletter/#fips-nostr-native-mesh-networking&#34;&gt;FIPS&lt;/a&gt; (&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub19wavu4f7l6l43h24jyskn7fvzy37kcfp67aqjtmv2qgy4lp34nhsda8p6k&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;jcorgan&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub19wa…8p6k&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;) shipped a working Rust implementation of Nostr-native mesh networking, using secp256k1 keypairs as node identities with transport-agnostic routing over UDP, Ethernet, Bluetooth, or LoRa radio. Its design showed that Nostr&amp;#39;s key model extends beyond social media into physical network infrastructure.&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;https://opensats.org/blog/fifteenth-wave-of-nostr-grants&#34;&gt;OpenSats announced its fifteenth wave of Nostr grants&lt;/a&gt;, funding projects including ContextVM and Nostube. Protocol changes included &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-47/&#34;&gt;NIP-47&lt;/a&gt; hold invoice support for Nostr Wallet Connect and &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-45/&#34;&gt;NIP-45&lt;/a&gt; (Counting Results) HyperLogLog for relay-side count estimation. &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-85/&#34;&gt;NIP-85&lt;/a&gt; (Trusted Assertions) service provider discoverability for &lt;a href=&#34;https://nostrcompass.org/en/topics/web-of-trust/&#34;&gt;Web of Trust&lt;/a&gt; scoring also merged. &lt;a href=&#34;https://github.com/rust-nostr/nostr&#34;&gt;rust-nostr&lt;/a&gt; began a full API redesign while Nostria 3.0 and &lt;a href=&#34;https://github.com/FROSTR-ORG&#34;&gt;Frostr&lt;/a&gt; (&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub17uvdffljczhlpjfvfj0q30dmh4ugh8wlzm8u6w64y2v4ts7fqsqqj28tr4&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Frostr&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub17uv…8tr4&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;, iOS TestFlight) both shipped. &lt;a href=&#34;https://nostrcompass.org/en/topics/blossom/&#34;&gt;Blossom&lt;/a&gt;&amp;#39;s local cache layer addressed media availability across relays.&lt;/p&gt;

&lt;h3 id=&#34;looking-ahead-2&#34;&gt;Looking Ahead&lt;/h3&gt;

&lt;p&gt;Five Februaries of protocol history show a consistent progression from foundational work to application-layer diversification, with the 2023 user influx as the turning point. In 2021, seven contributors worked across three relays. By 2026, the same protocol supported mesh networking and autonomous agent proposals running on production infrastructure.&lt;/p&gt;

&lt;hr&gt;

&lt;p&gt;That&amp;#39;s it for this week. Building something or have news to share? DM us on Nostr.&lt;/p&gt;
 &lt;/blockquote&gt;
    </content>
    <updated>2026-03-04T18:10:43Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsgnppkj4vh7hq4a26g8kc5pefkt2mhry07k32vjphn93vhpcurnyczyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg64a48g6</id>
    
      <title type="html">Amazing progress, especially for Marmot Protocol! We are happy to ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsgnppkj4vh7hq4a26g8kc5pefkt2mhry07k32vjphn93vhpcurnyczyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg64a48g6" />
    <content type="html">
      In reply to &lt;a href=&#39;/naddr1qqgrwdnxvyukxdnpv3jnjcehxdnrvq3qwav4fae3gyfy3xj298kxj2mj8phavz7vavps34przq02j7w902qqxpqqqp65wem3n2q&#39;&gt;naddr1qq…3n2q&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Amazing progress, especially for Marmot Protocol! We are happy to see the growth and adoption of such needed technology. We will be there with you all to help bring it to the world. Thanks for the shoutout and coverage of Vector&amp;#39;s latest v0.3.1 release!  ❤️ &lt;br/&gt;&lt;br/&gt;So many great builders in the Nostr ecosystem we are truly just learning about.
    </content>
    <updated>2026-03-04T18:00:35Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqspdpgjkmlk20nskmumr5dwgmynmfq9cnwqf7u7qqrr29vsfe3cwwszyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg60kvx8z</id>
    
      <title type="html">Love to see the explosive growth and adoption. Honored to share ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqspdpgjkmlk20nskmumr5dwgmynmfq9cnwqf7u7qqrr29vsfe3cwwszyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg60kvx8z" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsxsfpn5ama777j3rm2zdj3ynp9scghkehs44fj0y3n0ufw8yvedagl6ecc0&#39;&gt;nevent1q…ecc0&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Love to see the explosive growth and adoption. Honored to share the experience  🙏
    </content>
    <updated>2026-03-04T12:42:38Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs2mpd5l2wswvx70g2fxepcxdfww3tp0z6vua7vu3uu3u5enz3je7qzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6a8np4z</id>
    
      <title type="html">🟢 [ V E C T O R ] Open Beta v0.3.1 ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs2mpd5l2wswvx70g2fxepcxdfww3tp0z6vua7vu3uu3u5enz3je7qzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6a8np4z" />
    <content type="html">
      🟢 [ V E C T O R ] Open Beta v0.3.1&lt;br/&gt; &lt;img src=&#34;https://image.nostr.build/2c458c9be23bb6e2d7679a100e8521b5d7f830486f939b558b224ed88ca9c829.jpg&#34;&gt; &lt;br/&gt;&lt;br/&gt;We&amp;#39;ve just rolled out the latest version of Vector,  including a lot of UX optimizations for group chats, performance, file sharing, emojis, and many improvements for Android (notifications fixed).&lt;br/&gt;&lt;br/&gt;Check it out on GitHub or read more below:&lt;br/&gt;&lt;a href=&#34;https://github.com/VectorPrivacy/Vector/releases/tag/v0.3.1&#34;&gt;https://github.com/VectorPrivacy/Vector/releases/tag/v0.3.1&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;New:&lt;br/&gt;&lt;br/&gt;👥 Group Management: multi-admin, edit group info, bulk invites, invite-by-npub, group avatars, and many fixes&lt;br/&gt;🔔 Android Notifications: background message sync with Mark Read and inline Reply actions&lt;br/&gt;📡 Multiplayer Networking Upgrade: faster connections, seamless WiFi &#43; cellular switching, and Android connectivity fixes&lt;br/&gt;🎙️ Voice-to-Text AI: rebuilt speech-to-text with GPU acceleration on Android&lt;br/&gt;📁 File Attachment Overhaul: styled download boxes with progress spinners and retry states&lt;br/&gt;📦 Directory Zip &amp;amp; Send: compress and send entire folders with live progress and file tree preview&lt;br/&gt;🔒 Customizable Encryption: encrypt Vector with a PIN, Password, or go passwordless with instant logins&lt;br/&gt;🔄 Deterministic Sync: Vector now syncs your entire history, including missing messages, at ultrafast speeds (negentropy!)&lt;br/&gt;😀 Emoji Upgrade: Vector supports the very latest Unicode, with a library of over 2,000 emojis&lt;br/&gt;📬 Smarter DM Delivery: messages now route to the recipient&amp;#39;s preferred relays, for those with custom relay setups&lt;br/&gt;🤖 32-bit ARM on Android: added support for older Android devices (typically 32-bit ARM)&lt;br/&gt;🎮 Mini App Update Badges: one-tap in-panel updating when newer versions are available&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Improvements:&lt;br/&gt;&lt;br/&gt;⚡ Performance Overhaul: faster boot, image processing, and audio - up to &amp;gt;15x speedup across the board&lt;br/&gt;🗜️ Smaller &amp;amp; Faster App: &amp;gt;33% smaller install size and ~50% smaller frontend (we shrunk!)&lt;br/&gt;🖼️ New Image Placeholders: sharper, faster (12x) previews while photos load - powered by our custom Thumbhash library&lt;br/&gt;🧠 Memory Optimizations: lower RAM usage across the board (especially for high message &amp;amp; contact counts)&lt;br/&gt;🏗️ Background Sync: restructured backend enables reliable background sync on Android&lt;br/&gt;🎨 UI Polish: updated themes, chat backgrounds, settings layout, popup styling, and profile display&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Fixes:&lt;br/&gt;&lt;br/&gt;🔄 Group Reliability: improved message delivery with smarter relay handling, retry logic, and safer commit handling&lt;br/&gt;🤙 Emoji Panel Performance: fixed freezing and jitter when opening the emoji panel&lt;br/&gt;🍎 macOS White Flash: no more white flash on app startup (we improved Tauri to do this!)&lt;br/&gt;📱 Android Media: video and audio seeking now works correctly, with stream-based seeking in a custom media backend&lt;br/&gt;🔧 Upgrade Safety: fixed migration bug affecting some users upgrading from v0.2.3, extending backward-compat
    </content>
    <updated>2026-03-01T17:44:18Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsv95ht4xg3nm20crk0d4k0uupl2zeactwydv2g660zdnanqkxke5gzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg69v2a2q</id>
    
      <title type="html">We need your help, Nostr fam! Claude is now offering unlimited ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsv95ht4xg3nm20crk0d4k0uupl2zeactwydv2g660zdnanqkxke5gzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg69v2a2q" />
    <content type="html">
      We need your help, Nostr fam! &lt;br/&gt;&lt;br/&gt;Claude is now offering unlimited access for Open-Source projects that have 5,000 stars on GitHub.&lt;br/&gt;&lt;br/&gt;If you could support with a star ⭐ on the official Vector Privacy repo, it would be a huge help:&lt;br/&gt;&lt;a href=&#34;https://github.com/VectorPrivacy/Vector&#34;&gt;https://github.com/VectorPrivacy/Vector&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Learn More:&lt;br/&gt;&lt;a href=&#34;https://claude.com/contact-sales/claude-for-oss&#34;&gt;https://claude.com/contact-sales/claude-for-oss&lt;/a&gt;&lt;br/&gt;&lt;br/&gt; &lt;img src=&#34;https://image.nostr.build/f278475f0f0c0aec9958498883be8918719ec8bc3d52534beac2023a42d85a87.png&#34;&gt; 
    </content>
    <updated>2026-02-27T06:55:04Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsfd224q5xn64pkwjkg05cu399njudx08wtk6zwdg03hs7w5v4nutszyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6fdfl79</id>
    
      <title type="html">Optimizers gonna optimize. Want faster audio transcriptions? You ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsfd224q5xn64pkwjkg05cu399njudx08wtk6zwdg03hs7w5v4nutszyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6fdfl79" />
    <content type="html">
      Optimizers gonna optimize.&lt;br/&gt;&lt;br/&gt;Want faster audio transcriptions? You got it. ✅&lt;br/&gt;&lt;br/&gt;We&amp;#39;ve now been able to improve the transcription time by approximately 500%. The most important factor is that people who are using slower and older devices still have access to the same resources and features on Vector.&lt;br/&gt;&lt;br/&gt;You can expect these optimizations and features available on the next release for v0.3.1 and that includes you, Android users.&lt;br/&gt; &lt;video controls width=&#34;100%&#34; class=&#34;max-h-[90vh] bg-neutral-300 dark:bg-zinc-700&#34;&gt;&lt;source src=&#34;https://video.nostr.build/cf9b23a69a226668ae50532ad1ea1985f998fb7be5157f7e2fb873088d1364e8.mp4&#34;&gt;&lt;/video&gt;
    </content>
    <updated>2026-02-23T02:02:17Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs0t74cwnnml2y64t7jz59l4ug9xezc0urj8erk0spc56twtpcrnrqzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg69vtc0g</id>
    
      <title type="html">We have just open-sourced &amp;#34;fast-thumbhash&amp;#34;, a library ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs0t74cwnnml2y64t7jz59l4ug9xezc0urj8erk0spc56twtpcrnrqzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg69vtc0g" />
    <content type="html">
      We have just open-sourced &amp;#34;fast-thumbhash&amp;#34;, a library that produces beautiful image preview thumbnails with significant advantages over BlurHash; more detail, 12x faster, 10% smaller. More data in fewer characters.&lt;br/&gt;  &lt;img src=&#34;https://image.nostr.build/b0b9e84776f336605396bda058653b2fc09120c3e63403fab60aefe53aacffb6.jpg&#34;&gt; &lt;br/&gt; &lt;img src=&#34;https://image.nostr.build/19e765e36f08a45dab0da8ba4b3e2b3fdea71a94ad2349e98dad753642c0e86b.jpg&#34;&gt; &lt;br/&gt;&lt;br/&gt;fast-thumbhash is a from-scratch ThumbHash encoder/decoder that beats BlurHash on every axis. Below are 4 key points that compare this release of ThumbHash compared to its predecessor, BlurHash.&lt;br/&gt;&lt;br/&gt;🟢 12x faster encoding and decoding (14 µs vs 180 µs)&lt;br/&gt;🟢 Smaller on the wire: 26 chars base91 vs BlurHash&amp;#39;s 28 chars base83&lt;br/&gt;🟢 Richer data: alpha channel, embedded aspect ratio, full DCT L/P/Q/A vs BlurHash&amp;#39;s 4x3 RGB grid&lt;br/&gt;🟢 Better visual fidelity: more detail, better color accuracy, transparency support&lt;br/&gt;&lt;br/&gt;Over 10,000 images sent on Nostr:&lt;br/&gt;&lt;br/&gt;- BlurHash: 28 chars × 10k = 280 KB of placeholder data&lt;br/&gt;- ThumbHash (base91): 26 chars × 10k = 260 KB of placeholder data&lt;br/&gt;- 7.1% reduction (20 KB saved) — while encoding strictly more information per hash (alpha, aspect ratio, full DCT channels)&lt;br/&gt;&lt;br/&gt;This will also be integrated and available in Vector Messenger. You will be able to test it out yourself in the next release, v0.3.1. Attached is an image preview of what it will look like inside of the Vector GUI.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;We encourage transitioning to fast-thumbhash to maintain full unanimity of Marmot clients on our provably higher fidelity, faster and Nostr-optimised library &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nprofile1qqspwwwexlwgcrrnwz4zwkze8rq3ncjug8mvgsd96dxx6wzs8ccndmc2ymgxf&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;JeffG&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;nprofile…mgxf&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;  &lt;br/&gt;&lt;a href=&#34;https://github.com/marmot-protocol/mdk/pull/195&#34;&gt;https://github.com/marmot-protocol/mdk/pull/195&lt;/a&gt;
    </content>
    <updated>2026-02-21T19:29:54Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs96dlepc3e67hn4s5gm6vyg5vezuypycpm9mvy5303v57kck0vz2czyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6vpxjl2</id>
    
      <title type="html">Everyday, the Nostr network is expanding 🙏</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs96dlepc3e67hn4s5gm6vyg5vezuypycpm9mvy5303v57kck0vz2czyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6vpxjl2" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsghk7cevnp8t4wvmc2qgknz4j2l4pv6tx0rkyxn5yu38q83pystqguxypm0&#39;&gt;nevent1q…ypm0&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Everyday, the Nostr network is expanding  🙏
    </content>
    <updated>2026-02-16T23:25:18Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsqfyvlk3pkp4ak07ksjns4r93gyw5qe25pq5yj36wm2x4wl8legzszyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6xw6wcs</id>
    
      <title type="html">&amp;gt; Rescanning system for $200m from the US government. &amp;gt; No ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsqfyvlk3pkp4ak07ksjns4r93gyw5qe25pq5yj36wm2x4wl8legzszyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6xw6wcs" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsq8u2dqhrtpyvlmqlh0l3vrt5qk4jweplg85nqpq9h3jdaqnfge5gcg25r8&#39;&gt;nevent1q…25r8&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;&amp;gt; Rescanning system for $200m from the US government.&lt;br/&gt;&lt;br/&gt;&amp;gt; No such file or directory.&lt;br/&gt;&lt;br/&gt;We have confirmed the authenticity of this comment.
    </content>
    <updated>2026-02-16T19:20:19Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsxj9vp93jltagrf4cl59mjaextmhhpsxsuegs88ycfa4z32af62lgzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6uuzx0h</id>
    
      <title type="html">Vector is now listed on the UP Phone (Unplugged)! Are there any ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsxj9vp93jltagrf4cl59mjaextmhhpsxsuegs88ycfa4z32af62lgzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6uuzx0h" />
    <content type="html">
      Vector is now listed on the UP Phone (Unplugged)!&lt;br/&gt;&lt;br/&gt;Are there any other Nostr-based apps on the UP Phone App Store?&lt;br/&gt;&lt;br/&gt; &lt;img src=&#34;https://image.nostr.build/930e3fb57539fd94aebc05bb98db9ab4b1ce72992441ff3107feaf36964664cd.jpg&#34;&gt; &lt;br/&gt;&lt;br/&gt;Unplugged (UP Phone) is a privacy-focused smart phone that provides a bunch of features to protect their users from unwanted and unsolicited surveillance. &lt;br/&gt;&lt;br/&gt;If you&amp;#39;d like to learn more about them, check out &lt;a href=&#34;http://unplugged.com&#34;&gt;http://unplugged.com&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;
    </content>
    <updated>2026-02-16T19:17:53Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsrnfn2n0gw7gtuwfgxun2alqa9efqm2yn8yeugnjg9k5gjzaeeq8qzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6004nap</id>
    
      <title type="html">Waiting patiently for this... 👀</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsrnfn2n0gw7gtuwfgxun2alqa9efqm2yn8yeugnjg9k5gjzaeeq8qzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6004nap" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsra602pkxgq04ngu54gqsmgtmymsm3hjxr66es04yusxah3y965xgttlglw&#39;&gt;nevent1q…lglw&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Waiting patiently for this...  👀
    </content>
    <updated>2026-02-16T19:14:56Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsp8nh7chrgdvktdhnkmc53tn5zqr67adf4wh25d8tz9wx8kyzgmjszyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6k2ssl4</id>
    
      <title type="html">Hey @nprofile…vgpv in full transparency, there are a lot of ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsp8nh7chrgdvktdhnkmc53tn5zqr67adf4wh25d8tz9wx8kyzgmjszyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6k2ssl4" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsr30fcjg722p32u9uujhpdaayrz2w5uj8xsydmu0wue7pycwk8lvqzqlerc&#39;&gt;nevent1q…lerc&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Hey &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nprofile1qqsx20pku05dtc7w25fjmzdl0q92tna6up40jpjnw72dxc4fytxzywgthvgpv&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;xt0f&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;nprofile…vgpv&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; in full transparency, there are a lot of features and UX/UI improvements that Vector still requires to operate on the same level, as we are still in Open Beta... but you can see this infographic that breaks down degrees of privacy by Formless Labs for more information.&lt;br/&gt;&lt;br/&gt; &lt;img src=&#34;https://image.nostr.build/a66b437a5cf4297446e3d35869705acd15fefc4a7f6e004dfdf0fb735d597075.jpg&#34;&gt; 
    </content>
    <updated>2026-02-16T16:27:27Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsg7zj3j8sqsvmtgyudyvlsly8rken5qpp00w4ux7tsejqus03s3gczyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6j39u03</id>
    
      <title type="html">We&amp;#39;d like to take a moment and thank @nprofile…fdyh for ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsg7zj3j8sqsvmtgyudyvlsly8rken5qpp00w4ux7tsejqus03s3gczyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6j39u03" />
    <content type="html">
      We&amp;#39;d like to take a moment and thank &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nprofile1qyxhwumn8ghj7mn0wvhxcmmvqyvhwumn8ghj7urewfsk66ty9enxjct5dfskvtnrdaksqgqh2wxu9f38d8gfgsl33smuhc6cl26mh7vpzu6592nutlchrmthcsl0fdyh&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;elsat&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;nprofile…fdyh&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; for their latest PR for the Vector Privacy codebase to improve Nostr-based communications with NIP-17 kind 10050. It has been merged.&lt;br/&gt;&lt;br/&gt;You are what makes open-source culture what it is and why it is so amazing. There is nothing that can compare to the power of people united around the world and contributing towards the same vision and values. Thank you, truly. Your GitHub is insane by the way, in the best possible way. &lt;br/&gt;&lt;br/&gt;This PR adds NIP-17 inbox relay support so DMs are now sent to the recipient&amp;#39;s preferred inbox relays (kind 10050 lists) instead of broadcasting to every relay in the pool — with caching, fallback, and stampede prevention. It also auto-publishes and updates your own inbox relay list whenever you connect or change relay config. &lt;br/&gt;&lt;br/&gt;Before This PR:&lt;br/&gt;&lt;br/&gt;When you sent a DM, Vector just threw it at all your relays and hoped the other person would see it. Now it asks &amp;#34;hey, where does this person actually want their messages?&amp;#34; and sends it there specifically like mailing a letter to someone&amp;#39;s actual address instead of dropping copies at every post office in town.  It also tells other people where your mailbox is, automatically.&lt;br/&gt;&lt;br/&gt;GitHub PR #44:&lt;br/&gt;&lt;a href=&#34;https://github.com/VectorPrivacy/Vector/pull/44&#34;&gt;https://github.com/VectorPrivacy/Vector/pull/44&lt;/a&gt;&lt;br/&gt;&lt;br/&gt; &lt;img src=&#34;https://blossom.primal.net/1d580d13c78a6e041cd6310908ccfef0f8e1fb6ce6d21b2840fe0cbeef07b1fd.png&#34;&gt;  
    </content>
    <updated>2026-02-11T14:54:07Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqszv3qs5e2zeaeh22vp6vga5xahy0c7suwhx3znhgf6wxz5tu5ssqqzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6pjn5xk</id>
    
      <title type="html">💚</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqszv3qs5e2zeaeh22vp6vga5xahy0c7suwhx3znhgf6wxz5tu5ssqqzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6pjn5xk" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsqqqqxlvmsyjfqajzuztq7lpeuct7ty46xe6hfldcq4jxdmgdzrrcvjsf9z&#39;&gt;nevent1q…sf9z&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;💚
    </content>
    <updated>2026-02-09T14:20:54Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs05lth646tm6fwz3k4zs9l5ute77w3ed2gq6ahwt6t08zlm2fggzczyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg65r8ugr</id>
    
      <title type="html">🟢Feature Highlight (Privacy) ⛔Prevent URL Tracking What is ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs05lth646tm6fwz3k4zs9l5ute77w3ed2gq6ahwt6t08zlm2fggzczyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg65r8ugr" />
    <content type="html">
      🟢Feature Highlight (Privacy)&lt;br/&gt;&lt;br/&gt;⛔Prevent URL Tracking&lt;br/&gt;&lt;br/&gt;What is URL Tracking?&lt;br/&gt;&lt;br/&gt;Link tracking or URL tracking is primarily a marketing and advertising tool for companies to learn more about their users. Examples are where a user shared a link from, who they shared it with, who clicked/engaged with the link, and so on. Affiliate links are one of the most common examples of URL Tracking. They are more or less undesired cookies that we didn&amp;#39;t ask for or sign up for. &lt;br/&gt;&lt;br/&gt;Another common example is UTM (Urchin Tracking Module) and it is designed to track and analyze the performance of marketing campaigns by identifying traffic sources. Surely, you have seen the super long URLs with snippets added like utm_source, utm_medium, utm_campaign, and so on. &lt;br/&gt;&lt;br/&gt;Example:&lt;br/&gt;website.com/?utm_source=facebook&amp;amp;utm_medium=social&amp;amp;utm_campaign=sale&lt;br/&gt;&lt;br/&gt;✅Vector Fixes This&lt;br/&gt;As soon as you paste a link with the URL tracking on it you copied from somewhere online, it is automatically detected and stripped so the tracking stops there. You are no longer passing along unwanted trackers on yourself and to your contacts. &lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt; &lt;img src=&#34;https://image.nostr.build/eb4dfa8e5fca71621a4a3789ef74fb505cf84aca4a1813a4062ed9f08d3f95ce.jpg&#34;&gt; 
    </content>
    <updated>2026-02-07T04:24:25Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsxyd34pknurps9esdknnyqg7kn3g6yemyypkuefkyp0jdhavtx49szyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6830vhx</id>
    
      <title type="html">&#43;1 Arrow</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsxyd34pknurps9esdknnyqg7kn3g6yemyypkuefkyp0jdhavtx49szyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6830vhx" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqstfd00njttrp5djeudfzw0pdnjm6xev4j48w4mrzgxduc0u9gn5dc6ufder&#39;&gt;nevent1q…fder&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;&#43;1 Arrow
    </content>
    <updated>2026-02-06T13:22:03Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqstsdxtv6n0vvkzq538esyqxfsv87tm3a5a03am5l7ch4w98natfqszyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6ryqldf</id>
    
      <title type="html">Censorship-Resistance is the key to Freedom. ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqstsdxtv6n0vvkzq538esyqxfsv87tm3a5a03am5l7ch4w98natfqszyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6ryqldf" />
    <content type="html">
      Censorship-Resistance is the key to Freedom.&lt;br/&gt; &lt;img src=&#34;https://image.nostr.build/99ad50904a28f6714a0dae1afcb3495f4abee1ded59509d0d0f4cc327c9544a9.jpg&#34;&gt; 
    </content>
    <updated>2026-02-05T16:20:24Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs8mxtg3du2nxlhhdw5h7t4zhdas2vqnlx30w33sru5qz9jx003n4gzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6ca0es7</id>
    
      <title>Nostr event nevent1qqs8mxtg3du2nxlhhdw5h7t4zhdas2vqnlx30w33sru5qz9jx003n4gzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6ca0es7</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs8mxtg3du2nxlhhdw5h7t4zhdas2vqnlx30w33sru5qz9jx003n4gzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6ca0es7" />
    <content type="html">
        &lt;img src=&#34;https://blossom.primal.net/010b8e7ec90a94e8baf0133220348509596c712984bb7c34ac837fe07963df81.png&#34;&gt;  &lt;br/&gt;&lt;br/&gt;Pushing The Envelope — Privacy Messaging &amp;amp; Communication&lt;br/&gt;&lt;br/&gt;Vector Privacy Interview with Co-Founder YuurinBee&lt;br/&gt;&lt;br/&gt;1. The Origin Story&lt;br/&gt;&lt;br/&gt;&amp;#34;What was the exact moment you realized the world needed Vector Privacy? Was there a specific incident or realization that made you say &amp;#39;enough is enough&amp;#39; with existing messaging platforms?&amp;#34;&lt;br/&gt;&lt;br/&gt;Personally, I first realized the world needed “privacy by default” (as many people like to use the term now) a handful of years ago. Society and the world has blindly trusted these large, tech corporations that just say “private” or “encrypted” being nothing but marketing buzzwords and sadly lacking any bit of truth and substance. That is when I truly saw the need, not demand, but need for privacy in communication—not just with messenger apps, but really extending towards all digital services, platforms, and mediums. As long time Discord users, especially being gamers and shared interests in blockchain and crypto, both JSKitty and I had loved the UX and the communities that had formed on Discord over the past 8 years. During that time, we had created and managed many communities of our own. As time progressed and with more experience, we had noticed very poor security practices, no encryption for messages, and overall growing concerns for Discord’s privacy. Afterwards, it became normal to read about data breaches and personal identities leaked with Discord, as well as many other top social media and messenger platforms. Going back about 5-6 years, we first wanted to create a privacy messenger app called “Hawkie”, but we lacked the technical stack and infrastructure needed, not to mention the knowledge and skill we had back then truly pales in comparison to now. Therefore, it was put on the shelf with many other fun and unique ideas to develop until we discovered Nostr. Nostr (Notes and Other Stuff Transmitted by Relays) is an open, decentralized protocol that supports many of the foundational principles that we required both philosophically and technically.&lt;br/&gt;&lt;br/&gt;2. The Privacy Crisis&lt;br/&gt;&lt;br/&gt;&amp;#34;Most people think &amp;#39;I have nothing to hide, so why should I care about privacy?&amp;#39; How do you respond to that, and what are the hidden costs of surrendering our digital privacy that people don&amp;#39;t realize?&amp;#34;&lt;br/&gt;&lt;br/&gt;This is a splendid question and there’s quite a bit to say. It depends on the person I am talking to because I look for specific ways to relate to their potential problems that could follow based on their life and lifestyle practices.&lt;br/&gt;&lt;br/&gt;I respond to this comment almost everyday or at least every week, if not from the very people we built Vector for, but also while developing Vector I get this question relentlessly. One of the biggest takeaways in life I can share with you in the modern world, we often compromise security for convenience. We are so used to wanting everything so easy, just one click, login with one account and do a million things, save my passwords so I don’t have to remember, backup to iCloud so I can access my files and photos anywhere. There is nothing wrong with wanting simplicity and a universally convenient user experience, but most of us are unaware of the unforeseen consequences and you really have to ask yourself “is it really that much more effort”?. What is the trade off? What is the opportunity cost here? It is simply evaluating the risks and hopefully choosing the choice that ensures the highest level of risk mitigation. Is it that much more effort to safely store your seed phrase or private key somewhere offline than it is to drive to a bank, wait for a teller, express your want to open an account, then spend 15-30 minutes divulging all of your personal information and putting it into their database, then being told you’ll get a card in 3-5 business days before you can really even fully utilize the account and system. Oops, I forgot to tell you they are closed after 5pm and not open on the weekends. Is it really more convenient? We have been conditioned this way because of the systems society has adopted for many years. It does not imply that they are optimal or even efficient at all… quite the contrary most people would argue. &lt;br/&gt;&lt;br/&gt;To the world famous question “I have nothing to hide, so why should I care about privacy?”... I would respond by asking people questions to make them think and reevaluate what privacy means (some better than others lol). If you have nothing to hide, why not keep your windows open and your blinds open all the time? Why even bother putting walls up? I guess if you don’t care about privacy, there’s no need for clothes right? Why even bother putting up doors if you don’t mind people walking into your house and taking a look around, you’ve got nothing to hide right? Why don’t you put your phone on speaker while you’re in public and let everyone in on your conversation if you’ve really got nothing to hide? As silly and ridiculous as these questions are, it is about changing the mindset of how we view privacy. There has been a negative and a dark connotation around privacy that it’s only for people who have things to hide. Privacy is about security, not about hiding. &lt;br/&gt;&lt;br/&gt;3. The Metadata Problem&lt;br/&gt;&lt;br/&gt;&amp;#34;Vector emphasizes &amp;#39;No Metadata.&amp;#39; Can you explain what metadata is, why it&amp;#39;s arguably more dangerous than the actual message content, and how Vector solves this?&amp;#34;&lt;br/&gt;&lt;br/&gt;Metadata is like digital bread crumbs. Metadata is simply additional data that can be viewed like online identifiers, whether you want to share them or not. Everything digital has some form of an identity and from that identity is how you interact with the digital world online. Your phone has an IMEI number, which is like a serial number. It even has hardware, firmware, and software information like which operating system are you using, which software version, what type of camera, and much more. This information is potentially exposed when you communicate online. When you login to a website, your IP address is tracked, which is like your personal serial number from your internet provider. This can tell where exactly in the world you viewed the website (it could even be pinpointed to your exact block, house, room). That is why many people have recently started to use VPNs (Virtual Private Networks), to mask this connection and make it more secure as nobody wants to be communicating to the world where exactly they live. It is an irrelevant bit of information that comes with many risks and zero real benefits.&lt;br/&gt;&lt;br/&gt;The more information that nefarious, bad actors have on you makes it easier for them to infiltrate your life and cause a whole world of chaos and pain. This ranges from identity theft to stealing your bank account information, leading to a loss of money or assets, to committing crimes on your behalf, you name it.How does Vector solve this? By design. It does not collect this information as it has no need for it. Private messages should be only between two parties or any amount of disclosed members, consensually. Most companies, especially that offer “free” services, really are collecting your metadata and personal information in order to monetize it. They want to understand you, your behavior, and exploit your own psychology and patterns to try and sell you things. These companies can sell this information to third party marketing and advertisement brokers, if they don’t run a similar service internally. Information is digital gold, but it is not rocks they are mining, but people.&lt;br/&gt;&lt;br/&gt;4. Decentralization vs. Corporate Control&lt;br/&gt;&lt;br/&gt;&amp;#34;Signal, WhatsApp, Telegram—they all claim to be secure. What&amp;#39;s fundamentally different about Vector&amp;#39;s decentralized approach, and why does centralization make those platforms vulnerable no matter how good their encryption is?&amp;#34;&lt;br/&gt;&lt;br/&gt;None of those apps can prove they are, except for Signal, which invented the Signal Protocol. This was groundbreaking at the time for end-to-end encrypted messaging and used for many years by many apps, until more advanced protocols came about. The issue with data centralization, as the name implies, is a centralized unit—a central point of attack could wipe out or simply compromise an entire network. Decentralization makes this astronomically more difficult, depending on the levels of decentralization and method. For the record, I would like to share with readers that just because something says “decentralized” does not really mean it is or that it is secure. There are many blockchain projects that claim to be decentralized and have 11 nodes, which they control a majority of. You must always do your own research to study the degrees of decentralization, privacy, and security.&lt;br/&gt;&lt;br/&gt;Centralization also means single point of failure in terms of continuity.Centralization indeed makes those platforms more vulnerable, regardless of how good your encryption is. Encryption alone is not enough, but only one element. Just like decentralization, it is not enough on its own, but one important element. Here is a great infographic, research by Formless Labs, that covers this subject a bit more in detail, along with privacy.&lt;br/&gt;&lt;br/&gt;5. Real-World Use Cases&lt;br/&gt;&lt;br/&gt;&amp;#34;Beyond activists and journalists, who should be using Vector Privacy? Can you share why someone might consider using Vector instead of WhatsApp for example?&lt;br/&gt;&lt;br/&gt;Wonderful question. Vector is designed for everyone. This is our intention, from the first foundational pillar laid. Understand that Vector is currently only in Open Beta and has a very unique branding and style, but will be modular and customizable so that people can truly create their ideal setup for communication, whatever the use case. We want to normalize privacy and have it so people don’t even have to know or care about privacy, just simply loving the Vector Privacy UX is enough. Their privacy is protected and our job is complete. &lt;br/&gt;&lt;br/&gt;As a UX/UI developer, it is my personal goal to make it universal, but to dig deeper than that is really to make it fun, make it enjoyable. In the modern world, most of us communicate online because our networks are so big and vast. We have friends, family, and colleagues all over the world. This is the future of communication, it will mostly be digital. So, there needs to be a lot of emphasis and focus on the detail, the how. That is where my interests and knowledge in psychology hopefully comes in handy, not to exploit the human mind for dopamine traps and quick fixes to monetize actions, but to design in a way that is synchronistic, fluid, and feels natural with people.Messenger apps are often so limiting, we have barely scratched the surface. Especially with privacy messenger apps, most of them have a horrible UX that feels slow, unintuitive, and clunky… lacking any soul and void of anything that resembles humanity. We want to reinvent digital communication so that it feels effortless to truly express what is on your mind and heart. Let the end user focus on how good it feels to communicate and use Vector. Let us celebrate and sleep easy at night knowing that their privacy is protected. &lt;br/&gt;&lt;br/&gt;6. The No-KYC Philosophy&lt;br/&gt;&lt;br/&gt;“Vector requires no phone number, no email, and no KYC which is rare. Vector has made anonymity at signup a critical feature. Why?&amp;#34;&lt;br/&gt;&lt;br/&gt;You will hear me say this on repeat, if you haven’t already. KYC is the greatest threat to privacy and the worst design for privacy. In a high-trust society, exactly how we grew up thinking (naive), but that when companies collected our data, we trusted them because we thought it made logical sense to provide this information in order for them to do their jobs more efficiently. There is still some truth to that. The general concept of KYC is not bad, but implementing it into the modern world with digital, online systems is a horrible idea as we have witnessed time and time again. It does not matter how great your security is or how big your company is, how much money they make, how many B’s in their total market cap, how many people in the cybersecurity department, but they are exposed to the same threats as every other entity operating online. The worst part about it? It is our data, the customer’s data, that is compromised and exposed online and to the dark web.There needs to be a redesign of this traditional model and I think there are a lot of great minds and developers working on alternatives, but for now KYC is a major threat to security and privacy. Never give more information than you have to. If it feels too intrusive, stop and look for other alternatives. I can assure you there are many great alternatives out there. Simply removing the need for KYC or any form of alternative identity linking already makes the experience objectively more secure. If there is no data, then what?Vector is a standalone, open-source privacy protocol that doesn’t have an interest or use for a user’s personal data. Therefore, it doesn’t collect it.&lt;br/&gt;&lt;br/&gt;7. Open Source Trust&lt;br/&gt;&lt;br/&gt;&amp;#34;Vector is open source. Why is that non-negotiable for a privacy tool, and what would you say to someone who asks &amp;#39;Why should I trust Vector more than a closed-source app from a big company?&amp;#39;&amp;#34;&lt;br/&gt;&lt;br/&gt;Why would you trust something created by humans that you can’t see and verify in some way or form? Would you trust test results from a pharmaceutical company telling you how their new product is better and safer without seeing the results yourself? …especially being able to see what scientists signed off on the reports publicly. Then, you can do a deeper background check on these scientists to see if they are credible or are bought out and make your own conclusion. That is precisely how open source works. You can see the current state of the codebase, what changes were made by who and when, and you can even look deeper into those contributors to see what else they work on and virtually do a whole background check online. Furthermore, look at open source as the best way to get international peer review from people whether you want it or not. It is the true test of time. The best protocols are open source and I am more aligned with the philosophy and culture of open-source than anything. Most business models actually benefit off of their customers not knowing, being in the dark. For example, they don’t know their recipe, their trade secrets, etc. That is how they profit almost inexorably. Well, how do open-source projects make money? Many of them can still operate a for-profit model, while the codebase is open-source, but a lot of open-source projects choose the non-profit route and accept donations and grants. If there is a will, there is a way. 9/10 I will always trust and have more respect for open-source projects than not. For the record, just because something is open-source doesn’t not implicitly imply that it is safe nor secure. It only implies that the codebase is transparent and under the premise of it being accessible to everyone, it has a higher chance of other developers or contributors potentially identifying bugs, critical issues, or even suggesting improvements and optimizations. The odds are certainly higher. As the saying goes &amp;#34;If you have an apple and I have an apple and we exchange these apples, then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.&amp;#34;.&lt;br/&gt;&lt;br/&gt;8. The Surveillance Economy&lt;br/&gt;&lt;br/&gt;&amp;#34;Tech giants make billions selling user data and attention. Vector is free and doesn&amp;#39;t monetize user data. How is that sustainable, and why should users trust that Vector won&amp;#39;t &amp;#39;pivot&amp;#39; to ads or data sales later?&amp;#34;&lt;br/&gt;&lt;br/&gt;Absolutely, that is precisely what these tech conglomerates do and have been doing for decades, mostly unknown to the general public. There is indeed no such thing as a free lunch, energy has to always come from somewhere. Vector is sustainable simply for the fact that it is built on a robust and decentralized network out of any single individual’s control and power. It will survive, whether we want it to or not. The biggest threats, which are temporary, are really just internet outages more than anything. Why users should trust Vector? Don’t trust, verify. There is always a chance that anything could happen with any project. Even Bitcoin’s network was attacked by bad actors, years ago and even recently lol. Things don’t stay the same forever, but what’s important to know is that for the simple fact Vector is open-source, it could be forked and modified by anyone. If it had ads that someone didn’t like, they could fork the Vector Privacy repository and recreate it without ads for their own personal preference and even launch their own chat app. We encourage people to peer review and share feedback. Those are the basics for any true open-source app.Vector cannot pivot to data sales simply for the fact it doesn’t collect personal user data. It cannot and will not, by its protocol functionality and limitations alone. What data could be sold and who on earth would buy it?Fun Fact: The core contributors and founders of Vector Privacy cannot stand ads.&lt;br/&gt;&lt;br/&gt;9. Network Effects &amp;amp; Adoption&lt;br/&gt;&lt;br/&gt;&amp;#34;The hardest part of any messaging app is getting people to switch. Everyone is already on WhatsApp, Telegram, Discord, and Facebook Messenger. How do you convince someone to move their entire social circle to Vector, and what&amp;#39;s your strategy for overcoming the network effect?&amp;#34;&lt;br/&gt;&lt;br/&gt;100% legitimate question and no doubt, one of the biggest challenges. Part of our strategy is really to focus on the user experience. For future reference, let’s assume privacy is always a core focus for Vector and doesn’t need to always be mentioned. As I was sharing above, most messenger apps are not what people want or enjoy, they just don’t know any alternatives or like you shared, that’s where their entire social circles are. &lt;br/&gt;&lt;br/&gt;I foresee the growth of Vector being steady and organic. The best thing we can do is work with our community and the users to optimize their experience and also allow for high-level customization. We don’t want to force anything on anyone, that is one of the biggest things that prompted us to build our own app. So many apps force you to use their trash UX and do actions that you really don’t agree with or want to do, but have to in order to execute your intended goal.  &lt;br/&gt;&lt;br/&gt;Once people have had enough with their privacy being completely invaded and compromised on these other apps, they will abruptly leave and say if you want to message me, you can message me on Vector. How do I know? because I’ve already watched it happen both with Vector and other messenger apps. Once Vector is further along the development pipeline and distributed through the most popular app stores, I think it will be much easier and the user experience will speak for itself. I am not under the impression that people will immediately think Vector is better and more fun, but I will be putting in my blood, sweat, and tears to make that a reality. &lt;br/&gt;&lt;br/&gt;Retention is one of the biggest key factors of success for any and all applications. Why are people coming back? They have no other options, they love it, or it simply solves the problem(s) they have. I think one strategy is to focus on group chats and larger social networks, so that people don’t just log on to message their one friend privately. They can join other social groups, meet, interact, learn, and have fun like they would anywhere else online. Vector needs to be a home for people.&lt;br/&gt;&lt;br/&gt;10. The Future of Privacy&lt;br/&gt;&lt;br/&gt;&amp;#34;If Vector achieves mass adoption, what does the world look like in 5-10 years? What changes when billions of people have access to truly private, decentralized communication?&amp;#34;&lt;br/&gt;&lt;br/&gt;It is insane to imagine, honestly. With the rapid development of AI and technology we have already crossed the threshold of there being more AI-generated content on the internet than actual content generated by people for the past few decades. Yes, insane is the correct word. Terrifying as well knowing that if humanity itself doesn’t evolve to a higher standard of living, one with shared moral values, the technology we invent will continue to evolve and we will repeat the same cycles of suffering, but much quicker and more powerful. What I’m hoping happens is that society comes to a consensus on privacy being a basic, fundamental human right and there will be laws implemented that protect, rather than destroy. To be clear, I am certainly not under the illusion that this will or is likely to happen, but I remain confident in the resiliency of the human spirit and fight for freedom. Free, open-source, and permissionless technology will thrive.&lt;br/&gt;&lt;br/&gt;TLDR: Nothing new under the sun, but at least we have more privacy. :kek:&lt;br/&gt;&lt;br/&gt;11. The Call to Action&lt;br/&gt;&lt;br/&gt;&amp;#34;If someone is reading this interview and thinking &amp;#39;this sounds great, but I&amp;#39;ll switch later,&amp;#39; what would you say to them? Why should they download Vector today instead of waiting?&amp;#34;&lt;br/&gt;&lt;br/&gt;&amp;#34;If you don&amp;#39;t believe me or don&amp;#39;t get it, I don&amp;#39;t have time to try to convince you, sorry.&amp;#34; Lol, jk. I spent an hour typing up this response to answer all of these questions so you could understand… but really “there&amp;#39;s a difference between knowing the path and walking the path.” and I look forward to seeing you on the other side. Don’t act like you don’t download new apps every week or so. You don’t have to convert, it’s not a cult, it’s a privacy messenger app. Add me on Vector:&lt;a href=&#34;https://vectorapp.io/profile/npub12w73tzcqgpr2pcy4el5x60d2emeud4cyeeayynzqqg2fefzgytaqm4ktz3&#34;&gt;https://vectorapp.io/profile/npub12w73tzcqgpr2pcy4el5x60d2emeud4cyeeayynzqqg2fefzgytaqm4ktz3&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Additional Questions&lt;br/&gt;&lt;br/&gt;&amp;#34;How do you view Signal/Telegram/Session as competitors vs. allies in the broader privacy movement?&amp;#34;&lt;br/&gt;&lt;br/&gt;Great, love it. Give people options. These organizations and apps you listed have achieved great tasks and nothing but respect for them overall. You simply cannot deny the good and for the most part what it has done for the public’s perception of privacy. I like to see people as advocates of privacy, then in some way shape or form, we are on the same team. We are after all open-source, there are no trade secrets we need to protect in order to stay financially solvent lol. People using these apps does Vector no harm whatsoever, in fact they could even be a gateway into privacy for many… eventually leading them to test out Vector. Win, win. &lt;br/&gt;&lt;br/&gt;&amp;#34;What happens if a government demands user data or tries to shut Vector down?&amp;#34;&lt;br/&gt;&lt;br/&gt;What user data? There is no user data collected nor do founders, contributors, or users have access to other user’s data. As for “shutting down Vector”, it is an open-source, decentralized protocol. So, I guess shut down the internet and that’s a good place to start.&lt;br/&gt;&lt;br/&gt;&amp;#34;Vector seems technical. How do you make it accessible to non-technical users who just want to chat with friends?&amp;#34;&lt;br/&gt;&lt;br/&gt;It may appear technical, but really it shouldn’t be. Log on to Vector like you would any other messenger app, but with less steps. Yes, there are a few things to learn along the way like your private key and seed phrase, but we aim to make this more simple with each release. A great place to reference is the official docs on docs.vectorapp.io. We have a Beginner’s Guide, as well as each aspect of the app broken down to make it easier to understand if there is any confusion. Furthermore, join our community of people around the world who would love to help you get setup and learn more. For the time being, join the Vector Community Discord.&lt;br/&gt;&lt;br/&gt;Interview conducted by Sir Clodsworth III — Vector Privacy 2026
    </content>
    <updated>2026-02-05T11:46:00Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsvgkh3dfzzezp6f07ng76vxusc4dhxcacnj8skaxgkx5mkg6drx5qzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6cn5m6d</id>
    
      <title type="html">Vector 💚 Marmot</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsvgkh3dfzzezp6f07ng76vxusc4dhxcacnj8skaxgkx5mkg6drx5qzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6cn5m6d" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsrl9j2c5hu53vgpp2wenrngtazaud6ytw3hnjkf34c0zdarz966fgjwng0p&#39;&gt;nevent1q…ng0p&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Vector 💚 Marmot
    </content>
    <updated>2026-02-05T11:04:47Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqstwrmcv3vcqwf97w052lwxsv6pww9ahrz6lgqq0zacplqlmkfzzfgzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6xzwgx3</id>
    
      <title type="html">Glad you asked, 100% relevant of a question anyways. Just more ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqstwrmcv3vcqwf97w052lwxsv6pww9ahrz6lgqq0zacplqlmkfzzfgzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6xzwgx3" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs2vsuwyqc0xkhzguj9ep7w53qcw3qzep9hel4au9pnw853k732ndshuxn6p&#39;&gt;nevent1q…xn6p&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Glad you asked, 100% relevant of a question anyways. Just more love for the craft.&lt;br/&gt;&lt;br/&gt;Great projects you mentioned, we&amp;#39;re really hoping this becomes the standard. Decentralized data and personalize your own privacy.&lt;br/&gt;&lt;br/&gt;Let us check it out. Saw this circulating on social media, but haven&amp;#39;t read it yet.
    </content>
    <updated>2026-02-05T02:12:14Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsxmgxm0d362mt82me4pyswca0dmfyfjac40tdjfjmcudkj8x2tj4qzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6p78whm</id>
    
      <title type="html">Woah, thank you for the zaps! 🙏 ❤️</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsxmgxm0d362mt82me4pyswca0dmfyfjac40tdjfjmcudkj8x2tj4qzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6p78whm" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsrjdn9tla6uachkent55qqe0lnr2mns9xl7gl8cpeuy0f9nfwnnkct77df5&#39;&gt;nevent1q…7df5&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Woah, thank you for the zaps!  🙏 ❤️
    </content>
    <updated>2026-02-05T02:10:39Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqszwqx0xwdkvtaz2sknyua53hup7slng6f55ywfzmwjfvyfnpal3sszyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6h7l2ex</id>
    
      <title type="html">Wow! These look great on Nostr, Bee!</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqszwqx0xwdkvtaz2sknyua53hup7slng6f55ywfzmwjfvyfnpal3sszyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6h7l2ex" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsrz9xkp777ymwqvf433tjqwhqppt3x06yunruzx4lquw32u7d3gfcqdczuv&#39;&gt;nevent1q…czuv&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Wow! These look great on Nostr, Bee! 
    </content>
    <updated>2026-02-04T13:03:05Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsqtalxnc5g4vz70gqy50grpuvcvrx6ask85gxxakhjzvhwl3ys2wszyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6umy4fg</id>
    
      <title type="html">Not sure 100% the implications of levels of security judging ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsqtalxnc5g4vz70gqy50grpuvcvrx6ask85gxxakhjzvhwl3ys2wszyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6umy4fg" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsvctv6uxaaglkxl96q2k039znpnkuvhn69rcxs7gyngjqdyzuejksng0htz&#39;&gt;nevent1q…0htz&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Not sure 100% the implications of levels of security judging purely from app size alone, it can be quite subjective. Just because an app is smaller in size doesn&amp;#39;t mean it is less vulnerable, but more importantly just because an app is larger in size certainly doesn&amp;#39;t imply there are more security measures in place.&lt;br/&gt;&lt;br/&gt;Our whole take is just minimalism and efficiency, which ultimately affects the end user. Something taking 5 seconds more to load could be the difference of someone switching to a less private app, simply due to convenience and UX. With privacy as our foundation, UX now becomes one of the biggest focuses. &lt;br/&gt;&lt;br/&gt;We would really recommend checking out the Vector Privacy Policy if you&amp;#39;re interested to learn more in detail, it is both on our website and Gitbook. To summarize, we don&amp;#39;t collect nor have access to anyone&amp;#39;s data simply by architectural design. How can we give data that we ourselves don&amp;#39;t possess or have access to? ;)&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://vectorapp.io/privacy-policy/&#34;&gt;https://vectorapp.io/privacy-policy/&lt;/a&gt;&lt;br/&gt;&lt;a href=&#34;https://vector-privacy.gitbook.io/vector-privacy/help-center/privacy-policy&#34;&gt;https://vector-privacy.gitbook.io/vector-privacy/help-center/privacy-policy&lt;/a&gt;
    </content>
    <updated>2026-02-04T13:01:45Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsrjdn9tla6uachkent55qqe0lnr2mns9xl7gl8cpeuy0f9nfwnnkczyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6w3sz3n</id>
    
      <title type="html">Will be looking for more opportunities and ways to contribute, ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsrjdn9tla6uachkent55qqe0lnr2mns9xl7gl8cpeuy0f9nfwnnkczyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6w3sz3n" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsycxypachl8pc3ty4e4yal4rkukj7wt944ul2ycq5aef20ydxsgest8fxwg&#39;&gt;nevent1q…fxwg&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Will be looking for more opportunities and ways to contribute, however we can.  🙏
    </content>
    <updated>2026-02-04T12:51:32Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqszd3usun4yyt3j5prvqnluayvm48n9qwpa9u0aawvsdq0al97tpgczyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6mn6p8h</id>
    
      <title type="html">🟢 [ V E C T O R ] Open Beta v0.3.0 The first release of 2026 ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqszd3usun4yyt3j5prvqnluayvm48n9qwpa9u0aawvsdq0al97tpgczyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6mn6p8h" />
    <content type="html">
      🟢 [ V E C T O R ] Open Beta v0.3.0&lt;br/&gt;&lt;br/&gt;The first release of 2026 and it&amp;#39;s going to be a difficult one to match. This is by far the biggest Vector release to date and we couldn&amp;#39;t be more excited to share it with you all.&lt;br/&gt;&lt;br/&gt;🔰 &lt;a href=&#34;https://vectorapp.io&#34;&gt;https://vectorapp.io&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Important: &lt;br/&gt;Group Chats have undergone several breaking-changes, due to the lack of stability in our previous Alpha Group Chats implementation, and thereby their lack of usage; Group Chats will be reset when you download v0.3.0, please re-create any Groups you previously owned.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;New:&lt;br/&gt;🧩 Mini Apps Platform: WebXDC-based games &amp;amp; apps within Vector with P2P Multiplayer (Yes, it plays DOOM!)&lt;br/&gt;🏪 The Nexus: discover and install Mini Apps from a secure, decentralized App Store, built for Vector&lt;br/&gt;🌐 Custom Relays: configure your own preferred relays for personalized connectivity&lt;br/&gt;🎨 New Themes: three additional themes, each with their own exotic takes, Keep it Purple, people&lt;br/&gt;🔔 Notification Sounds: audio notifications, with our homemade Prélude sound, custom sounds, and smart caching&lt;br/&gt;🖼️ GIF Picker &amp;amp; Inline Images: search and send GIFs directly from the chatbox, powered by GIFverse&lt;br/&gt;👋 Leave Group: ability to leave groups, with proper system event notifications for everyone else&lt;br/&gt;✏️ Message Editing: edit sent messages with full history tracking&lt;br/&gt;⌨️ Popup Shortcuts: Enter to confirm, Escape to close popups; ESC to cancel Reply/Edit&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Improved:&lt;br/&gt;🔐 MLS Overhaul: major messaging protocol improvements for reliability and security, based on the latest MDK&lt;br/&gt;📂 MIP-04 File Sharing: imeta attachment handling for MLS groups, built for compatibility with White Noise&lt;br/&gt;⚡ Memory Optimizations: reduced memory usage during image uploads (around 4x less!)&lt;br/&gt;🗄️ Database Performance: migration system overhaul with improved stability, safety and performance&lt;br/&gt;💬 Message Bubbles: refined corner rounding, grouping and a new &amp;#34;Sending/Sent&amp;#34; status&lt;br/&gt;🖼️ SVG Optimization: optimized vector graphics across the app (reduced app size!)&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Fixed:&lt;br/&gt;🖼️ Profile Sync: avatars and banners now update correctly&lt;br/&gt;⏱️ Chat Timestamps: fixed timestamps disrupting avatar/message streaking&lt;br/&gt;💬 Typing Indicators: deduplicated indicators and optimized performance&lt;br/&gt;🔄 Reply Context: replies now display the latest edited content&lt;br/&gt;🔍 Search Box: fixed styling and typing indicator expiries&lt;br/&gt;&lt;br/&gt;&lt;br/&gt; &lt;img src=&#34;https://blossom.primal.net/8a46bd1248ba0905bbb7e86ef706b8cd618d70111917e85d24ab80155e3099af.png&#34;&gt; 
    </content>
    <updated>2026-01-31T18:01:30Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs0wl4a6vlwncykseln7v2x9vcvzj23hxj9fxeu3twpqj490mjsguszyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6za5hht</id>
    
      <title type="html">This is what the video looks like in Vector. Somehow it got ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs0wl4a6vlwncykseln7v2x9vcvzj23hxj9fxeu3twpqj490mjsguszyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6za5hht" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsyzxkp7l8j2sesxvsvpktm2565va02zf2rcgpwpafsrut6kseg6dqpzemhxue69uhhyetvv9ujuurjd9kkzmpwdejhgesz0um&#39;&gt;nevent1q…z0um&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;This is what the video looks like in Vector. &lt;br/&gt;Somehow it got absolutely rekt here on Nostr (uploaded from Damus).&lt;br/&gt;&lt;br/&gt;but thank you all at WhiteNoise and Marmot 🙏 &lt;br/&gt;&lt;br/&gt; &lt;img src=&#34;https://blossom.primal.net/33e8c47ddb97577072cfa684aa52180ba95fd2c669135edf66cdcb9f3d95d71c.png&#34;&gt;  
    </content>
    <updated>2026-01-28T21:45:36Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsg8c26yfyrn782vf85uceczmc6u9rnu0hkvzlpwfgm8ej3phm75jczyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6h9hu8q</id>
    
      <title type="html">OxChat is great. 0xChat: - iOS (App Store): ~196 MB - Android : ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsg8c26yfyrn782vf85uceczmc6u9rnu0hkvzlpwfgm8ej3phm75jczyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6h9hu8q" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsg8kz7933sp0jzpkp72qmgxla6g2ckmmyzrsql7p2c9547ma2u98qjj8xna&#39;&gt;nevent1q…8xna&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;OxChat is great.&lt;br/&gt;&lt;br/&gt;0xChat:&lt;br/&gt;- iOS (App Store): ~196 MB &lt;br/&gt;- Android : ~85–103 MB&lt;br/&gt;- Desktop: ~54.82 MB (Based on latest v1.5.3)&lt;br/&gt;&lt;br/&gt;Keychat:&lt;br/&gt;- iOS: ~93.5 MB&lt;br/&gt;- Desktop: ~29.25 MB&lt;br/&gt;&lt;br/&gt;Always nice to be aware of these matters.&lt;br/&gt;If you have any findings that show different data, please let us know.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;
    </content>
    <updated>2026-01-28T10:35:07Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsd63k5taswnz23s3ugtd5jxzk6f4s72hpt8a4hhqjtnmzxdzzn4pgzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6lntwe5</id>
    
      <title type="html">The Ancient Art of Optimization™ After doing some research and ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsd63k5taswnz23s3ugtd5jxzk6f4s72hpt8a4hhqjtnmzxdzzn4pgzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6lntwe5" />
    <content type="html">
      The Ancient Art of Optimization™&lt;br/&gt;&lt;br/&gt;After doing some research and comparison with other messenger apps, both private and not, we wanted to share with you all our findings. On average as it varies across different operating systems, Vector&amp;#39;s app size is ~25 MB. To compare it with the other apps out there, we have used one &amp;#34;Vector Floppy Disk&amp;#34; for you to visualize how many &amp;#34;Vectors per x app&amp;#34;. For starters, you can see there are about 17 Vectors per Signal (Signal is 17x the size of Vector). Let the numbers speak for themselves. This is reasonable and likely to change and grow with time, but many apps get stuck in this data drain and fail to optimize their codebase, which negatively affects the end user. Vector is intended and designed for every OS and platform out there, to reach the hands of everyone on the planet. If we can&amp;#39;t get it working how we want the first time, keep optimizing...&lt;br/&gt;  &lt;img src=&#34;https://image.nostr.build/44a6454545620d3e20337de91c2ce5f1f663e26430a3769680a83f41ba3c9101.jpg&#34;&gt; 
    </content>
    <updated>2026-01-27T21:23:13Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs9a3d3j6p8t5cpzgw223639cr330kcp9clxpkaefrcp65s986gtlczyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg67gyh6f</id>
    
      <title type="html">Vector Privacy — Privacy Policy Updated (January 21, 2026) As ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs9a3d3j6p8t5cpzgw223639cr330kcp9clxpkaefrcp65s986gtlczyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg67gyh6f" />
    <content type="html">
      Vector Privacy — Privacy Policy Updated&lt;br/&gt;(January 21, 2026)&lt;br/&gt;&lt;br/&gt;As of January 21, 2026, we have officially published the Vector Privacy Policy, which is available on the official website as well as the Vector Privacy Gitbook. For those that are interested, we recommend checking out and reading the latest Privacy Policy to clearly understand about Vector Privacy and how we operate. We have done our best to be as transparent as possible and will always update the community as frequently as possible. If you all have any questions or suggestions, please feel free to comment.&lt;br/&gt;&lt;br/&gt;Privacy Policy (Website):&lt;br/&gt;&lt;a href=&#34;https://vectorapp.io/privacy-policy/&#34;&gt;https://vectorapp.io/privacy-policy/&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Privacy Policy (Gitbook):&lt;br/&gt;&lt;a href=&#34;https://vector-privacy.gitbook.io/vector-privacy/guides/guides/vector-node-setup-nostr&#34;&gt;https://vector-privacy.gitbook.io/vector-privacy/guides/guides/vector-node-setup-nostr&lt;/a&gt;&lt;br/&gt;&lt;br/&gt; &lt;img src=&#34;https://image.nostr.build/d1192eca6d35ab1223edd50b628c40e787ae1eebb52fb6c3e19c39131f71654d.jpg&#34;&gt; 
    </content>
    <updated>2026-01-22T14:22:00Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs876j3k5rp3xef6h35hc5wlkmme62zapefzlwgw78s58h3n7dt5pczyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6sqla6v</id>
    
      <title type="html">11.2 — Never Forget. Thanks for sharing this and glad you took ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs876j3k5rp3xef6h35hc5wlkmme62zapefzlwgw78s58h3n7dt5pczyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6sqla6v" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs2jz4enh9ar0ket4ptk44kk48k6024wg5vqn0zys9t8ly3n457t3qzlf93v&#39;&gt;nevent1q…f93v&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;11.2 — Never Forget. Thanks for sharing this and glad you took a moment to read the details and fine print.
    </content>
    <updated>2026-01-22T14:03:35Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsf5v2cxyppf0xz9lrw2shcnj9skqhr4wzdkuzmvv5wmghlxgg8h4czyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6lae78p</id>
    
      <title type="html">Full Nostr Relay Node Guide (Linux - Ubuntu 22 &#43; Strfry) Adding ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsf5v2cxyppf0xz9lrw2shcnj9skqhr4wzdkuzmvv5wmghlxgg8h4czyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6lae78p" />
    <content type="html">
      Full Nostr Relay Node Guide&lt;br/&gt;(Linux - Ubuntu 22 &#43; Strfry)&lt;br/&gt;&lt;br/&gt;Adding to the last announcement, we wanted to share a bit more about what it means and extend the opportunity to all those who are interested in supporting data decentralization by self-hosting a Full Vector Node on the relay network Nostr.&lt;br/&gt;&lt;br/&gt;We have just published a full guide on GitBook for Linux (Ubuntu 22) that gives you a step-by-step process on how to host your own node. The spec requirements are listed in the GitBook documentation. If anyone is interested or has any questions, just ask in ⁠the Vector Discord and the community will help you get set up!&lt;br/&gt;&lt;br/&gt;Vector Node Setup Guide:&lt;br/&gt;&lt;a href=&#34;https://vector-privacy.gitbook.io/vector-privacy/guides/guides/vector-node-setup-nostr&#34;&gt;https://vector-privacy.gitbook.io/vector-privacy/guides/guides/vector-node-setup-nostr&lt;/a&gt;&lt;br/&gt;&lt;br/&gt; &lt;img src=&#34;https://image.nostr.build/f0c1c22add153052ccc06c66585a574644f501149d170cc02c5015bd50225059.gif&#34;&gt; &lt;br/&gt;&lt;br/&gt;#nostr #nostrdevs #grownostr #decentralization
    </content>
    <updated>2026-01-06T11:12:12Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs90vxsyuc5whdqn3msv4la0p90jav9hvr3a3c2jfumvpe0hmhg6rqzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6tpl2ga</id>
    
      <title type="html">Vector Privacy on the rise.</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs90vxsyuc5whdqn3msv4la0p90jav9hvr3a3c2jfumvpe0hmhg6rqzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6tpl2ga" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs9gup7yplmpch5fa6lkvr2sf5cv83wm3y0tfaesd3593qefx05djc7rwd33&#39;&gt;nevent1q…wd33&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Vector Privacy on the rise.
    </content>
    <updated>2026-01-06T11:04:48Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsq77v6wqeaj2q4lsr0a2wvj2nd4ucwxrltzwh692q8e2jgyt5cc7czyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6hs3lj7</id>
    
      <title type="html">We&amp;#39;ve Added a New Nostr Node for Asia! ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsq77v6wqeaj2q4lsr0a2wvj2nd4ucwxrltzwh692q8e2jgyt5cc7czyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6hs3lj7" />
    <content type="html">
      We&amp;#39;ve Added a New Nostr Node for Asia!&lt;br/&gt;&lt;br/&gt;wss://asia.vectorapp.io/nostr&lt;br/&gt;&lt;br/&gt;To help support the resiliency of the decentralized relay network, we have added a new node in 🇭🇰 Hong Kong to support users in Asia with a better relay time and connectivity. In the near future, Vector will be adding support to allow users to add their own desired relays in the Settings. If you&amp;#39;d like to learn how to setup a Vector Node on the Nostr Network, please check out the guide below. &lt;br/&gt;&lt;br/&gt;Learn how to setup a Nostr Node:&lt;br/&gt;&lt;a href=&#34;https://vector-privacy.gitbook.io/vector-privacy/guides/guides/vector-node-setup-nostr&#34;&gt;https://vector-privacy.gitbook.io/vector-privacy/guides/guides/vector-node-setup-nostr&lt;/a&gt;&lt;br/&gt;&lt;br/&gt; &lt;img src=&#34;https://blossom.primal.net/8f6bf9e461ca6fa6a93818fe7acd9a40de5b3019a2aaf7de18de7ec813625307.png&#34;&gt;  
    </content>
    <updated>2026-01-05T14:42:39Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs0adh8s7eq7350gs8zj258y78qav4y5kwumpycupxppjtj3v03nuqzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg65my68x</id>
    
      <title type="html">You will like what&amp;#39;s cooking for this year ;) Will most ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs0adh8s7eq7350gs8zj258y78qav4y5kwumpycupxppjtj3v03nuqzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg65my68x" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs8skdm6pqj9hyemsx8dqthkvf6ee4hxqckctkwruar0z4plc68gqgpwj0ry&#39;&gt;nevent1q…j0ry&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;You will like what&amp;#39;s cooking for this year ;) Will most likely organize some game nights for the community.
    </content>
    <updated>2026-01-01T13:20:16Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs9x4zfcvyrv03mpx72crj5fedreh4vjhrx0qqtlhrgxt7r9mxw32czyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6d44txm</id>
    
      <title type="html">We&amp;#39;re on the lookout for stable Blossom servers that allow ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs9x4zfcvyrv03mpx72crj5fedreh4vjhrx0qqtlhrgxt7r9mxw32czyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6d44txm" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqswtsq6kv55c9j72de3rhf3vcy6fjhjpc9kkj8wslhwsc5x3hstgvcjrq2zk&#39;&gt;nevent1q…q2zk&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;We&amp;#39;re on the lookout for stable Blossom servers that allow for Encrypted Blobs and any Mime Types to upgrade performance and stability for 2026. Feel free to connect us with anyone who may know. Thanks!
    </content>
    <updated>2026-01-01T13:19:26Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsgscsy4k3h9tah9t2lt09gcu7y3r64f5gxf82x34ejw204cr83zuqzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6p7e2vq</id>
    
      <title type="html">Thanks for sharing this with us @nprofile…7ysa Our team will ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsgscsy4k3h9tah9t2lt09gcu7y3r64f5gxf82x34ejw204cr83zuqzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6p7e2vq" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs2855vp5s2ss70dlq7q57u8d7kh6jquqkvxsnw5wm3y9mment8z7gp9prg5&#39;&gt;nevent1q…prg5&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Thanks for sharing this with us &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nprofile1qqsth7fr42fyvpjl3rzqclvm7cwves8l8l8lqedgevhlfnamvgyg78sdv7ysa&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Keychat&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;nprofile…7ysa&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; Our team will look more into what you have shared to dive deeper into the protocols&amp;#39; pros and cons.
    </content>
    <updated>2025-12-23T13:29:59Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs87zy04zmxc930yy4qzlva3untlv7jscr3up7hnxc7ar9x3jnczrszyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6y2zh6g</id>
    
      <title type="html">Decentralized Quake III? Where nostalgia meets privacy tech. ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs87zy04zmxc930yy4qzlva3untlv7jscr3up7hnxc7ar9x3jnczrszyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6y2zh6g" />
    <content type="html">
      Decentralized Quake III?&lt;br/&gt;&lt;br/&gt;Where nostalgia meets privacy tech.&lt;br/&gt;&lt;br/&gt;&lt;video controls width=&#34;100%&#34; class=&#34;max-h-[90vh] bg-neutral-300 dark:bg-zinc-700&#34;&gt;&lt;source src=&#34;https://video.nostr.build/076fdc7ce1ad825824969d7f3ac0d37cc914d077b4afcdbcf906c285d1724f36.mp4&#34;&gt;&lt;/video&gt;&lt;br/&gt;&lt;br/&gt;Decentralized gaming now being tested on Vector. No blockchain, no servers, no bullshit.... well lag, that&amp;#39;s still bullshit. Local/Regional gameplay is perfect. Playing halfway around the world is not optimal, but still playable. Ping obviously offers massive advantages in fast-paced FPS games. &lt;br/&gt;&lt;br/&gt;If anyone is interested in testing the limits with us, download the Pre-Release (v0.3.0):&lt;br/&gt;&lt;a href=&#34;https://github.com/VectorPrivacy/Vector/releases/tag/v0.3.0&#34;&gt;https://github.com/VectorPrivacy/Vector/releases/tag/v0.3.0&lt;/a&gt;
    </content>
    <updated>2025-12-23T13:28:43Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsgskug90eu7pztcqm7xx0892lxavnnaz2jffceautz925lwagk4aqzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6mjgvf2</id>
    
      <title type="html">🟢 [ V E C T O R ] Open Beta v0.2.3 Behold, the latest release ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsgskug90eu7pztcqm7xx0892lxavnnaz2jffceautz925lwagk4aqzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6mjgvf2" />
    <content type="html">
      🟢 [ V E C T O R ]  Open Beta v0.2.3&lt;br/&gt;&lt;br/&gt;Behold, the latest release of Vector Beta in 2025! Additional overhaul of UX improvements, added features, and the first iteration of Vector Web Profiles that function like contact cards via the web.&lt;br/&gt;&lt;br/&gt;🔰 &lt;a href=&#34;https://vectorapp.io&#34;&gt;https://vectorapp.io&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;🧵Updates Below&lt;br/&gt;&lt;br/&gt;New:&lt;br/&gt;- 🪪 Vector Web Profiles: you can now share your profile &amp;#34;Contact Card&amp;#34; over the web, with one‑click adding, try this! &lt;a href=&#34;https://vectorapp.io/profile/npub1gwfpm6l8fhn6rs83j8rjjnjgkdqv89chd2fdhy6zc2uvpuwf39vsfuxxee&#34;&gt;https://vectorapp.io/profile/npub1gwfpm6l8fhn6rs83j8rjjnjgkdqv89chd2fdhy6zc2uvpuwf39vsfuxxee&lt;/a&gt;  &lt;img src=&#34;https://image.nostr.build/1977832193f702c024a32d7350a3c0418db5a3b4ecc90fe424090e3eefdbfd74.jpg&#34;&gt; &lt;br/&gt;- 🎤 Overhauled Voice Messaging: a completely new Voice Messaging experience, with intuitive gestures &amp;amp; sleek UI.&lt;br/&gt;- 📁 Upload Previews: files are now previewed prior to uploading, giving you a chance to review and confirm.&lt;br/&gt;- 🗂️ Image Compression: images are now intelligently compressed before uploading; full‑quality is just a switch!&lt;br/&gt;- 🖼️ Window Persistence: Vector now remembers how you size and position your app.&lt;br/&gt;&lt;br/&gt;Improved:&lt;br/&gt;- 🖌️ UI Revamp: a glassy, animated header, redesigned popups, mini‑avatars, group creator UI, and more.&lt;br/&gt;- 💬 Expanding Chatbox: the real OG of this update; your chatbox finally expands to the size of your yap.&lt;br/&gt;- ⚡️ On‑Demand Decryption: Vector no longer decrypts fully at boot, but on‑demand, vastly reducing RAM &amp;amp; CPU use.&lt;br/&gt;&lt;br/&gt;Fixed:&lt;br/&gt;- ⚡️ Flashbang: Vector had a brief &amp;#34;white flash&amp;#34; at startup, nicknamed “the flashbang”, this has been resolved.&lt;br/&gt;- 🪵 Fixed Logouts: on some systems, particularly Windows, logouts were failing; this is now fixed.&lt;br/&gt;- 📨 Several Unread‑System Bugs: more reliable read markers and better cross‑device compatibility.&lt;br/&gt;- 📥 Improved Download Stability: attachment downloads are more stable and less resource‑wasteful.&lt;br/&gt;- ⌨️ Removed Search OS Autocorrect: the Emoji Search was often interrupted by OS autocorrect, now disabled.&lt;br/&gt;
    </content>
    <updated>2025-12-15T13:33:55Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsqk7uhuq643683vdt525s9c39mnlqla92ph5djgcx2j3fv3d6mslszyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6n0h3l0</id>
    
      <title type="html">🙏💚</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsqk7uhuq643683vdt525s9c39mnlqla92ph5djgcx2j3fv3d6mslszyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6n0h3l0" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs2qusec6d79fcdejzxy4tvxx09wklqu2m0n67dhy0h6rje7utsrcctzpsy4&#39;&gt;nevent1q…psy4&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;🙏💚
    </content>
    <updated>2025-12-14T03:24:09Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsvxppzm4mfr55nfd73kz66725m9lzfy6mfvkjzp33y55j5ck97ucqzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg63gpsth</id>
    
      <title type="html">Welcome aboard, friend. 🫡💚</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsvxppzm4mfr55nfd73kz66725m9lzfy6mfvkjzp33y55j5ck97ucqzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg63gpsth" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsf57ssvym6wtn7zvhym0a3qq5qa0q8ef303xd9ldv36dtm5p4vkvgmdj4g3&#39;&gt;nevent1q…j4g3&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Welcome aboard, friend. 🫡💚
    </content>
    <updated>2025-12-07T20:30:05Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs0h0ses0vh2m2ur4spzswnem3483ju8m8usxxr7v855ucy5u0sykszyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6xcajdg</id>
    
      <title type="html">Sending safe wishes your way, friend. (Late appreciation for your ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs0h0ses0vh2m2ur4spzswnem3483ju8m8usxxr7v855ucy5u0sykszyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6xcajdg" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqszz9ly33km302vp8m0j62f6wm63ajl4y3yqsdwnha8knydnf8dcxqwez26r&#39;&gt;nevent1q…z26r&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Sending safe wishes your way, friend.&lt;br/&gt;&lt;br/&gt;(Late appreciation for your mention of Vector in Nostr Recap, too! 🙏💚)
    </content>
    <updated>2025-12-07T13:59:44Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsv9676a8sa4fyrlmxtpvmlk0vxpqxvyey8dnj0yj0tza07adpkkwszyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6f6hz3v</id>
    
      <title type="html">Vector Privacy is now on GitBook! The past couple of weeks, we ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsv9676a8sa4fyrlmxtpvmlk0vxpqxvyey8dnj0yj0tza07adpkkwszyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6f6hz3v" />
    <content type="html">
      Vector Privacy is now on GitBook!&lt;br/&gt;&lt;br/&gt;The past couple of weeks, we have been working to populate the GitBook documentation where everyone can learn more about Vector, from novices to experts. GitBook is designed for your average person to be able to read and understand, along with more specific documentation for developers. &lt;br/&gt;&lt;br/&gt;We have begun to outline the entire Vector Privacy ecosystem, as well as breaking down specifics about Vector Messenger. Visit either link below and you can go from top to bottom with the pagination feature or you can click on specific pages that interest you.&lt;br/&gt;&lt;br/&gt;If privacy interests you, be sure to visit the Privacy page.&lt;br/&gt;&lt;br/&gt;Visit the GitBook:&lt;br/&gt;&lt;a href=&#34;https://docs.vectorapp.io&#34;&gt;https://docs.vectorapp.io&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt; &lt;img src=&#34;https://image.nostr.build/7e6c0bf493dbf17a764e5ffb264d11c0632ab3e93c34001a5c8369fb51ef0104.jpg&#34;&gt; 
    </content>
    <updated>2025-12-04T09:34:24Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsqsxklvs58n7j00v5zmhnlm27qynqrzgre0hjprj97lqvqyx699uszyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6r4z3cz</id>
    
      <title type="html">🟢 [ V E C T O R ] Open Beta v0.2.2 &amp;gt;&amp;gt;&amp;gt; ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsqsxklvs58n7j00v5zmhnlm27qynqrzgre0hjprj97lqvqyx699uszyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6r4z3cz" />
    <content type="html">
      &lt;br/&gt;🟢 [ V E C T O R ]  Open Beta v0.2.2&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://vectorapp.io&#34;&gt;https://vectorapp.io&lt;/a&gt; &amp;lt;&amp;lt;&amp;lt;&lt;br/&gt;&lt;br/&gt;We are happy to share with you all the latest release—weeks worth of polish, updates, and improvements. From a complete database rewrite, to new features, bug fixes, and a smoother user experience. It will be a significant and noticeable change, especially for Group Chats and visiting the Settings tab.&lt;br/&gt;&lt;br/&gt;💡 Feature Spotlight: Android Support&lt;br/&gt;&lt;br/&gt;We have now released the public Android APK that has been officially published on GitHub. There is also mobile support via the website (listed above), where you’ll find a download button for your Android device.&lt;br/&gt;&lt;br/&gt;Development Updates:&lt;br/&gt;&lt;br/&gt;New:&lt;br/&gt;📲 Android APK: the first public Android APK is now available for Vector!&lt;br/&gt;&lt;br/&gt;📦 Storage Manager: a Settings section that gives a glance-able breakdown of Vector&amp;#39;s storage usage.&lt;br/&gt;&lt;br/&gt;👥 Primary Device Setting: a new setting that allows you to set a device to receive future Group Invites.&lt;br/&gt;&lt;br/&gt;💽 New Database: Vector now uses SQLite (w/ encryption layer) for ultra-fast, reliable, compact persistence.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Improved:&lt;br/&gt;🛜 Faster Synchronization: parallel processing enables Vector&amp;#39;s syncing to be noticeably faster.&lt;br/&gt;&lt;br/&gt;📂 New File Attachment Design: a significant design overhaul when transferring non-media files.&lt;br/&gt;&lt;br/&gt;👤 Profile Shortcuts: in the Group Overview, you can now click on anyone to visit their profile.&lt;br/&gt;&lt;br/&gt;📨 Profile Message Shortcut: you can now hit &amp;#34;Message&amp;#34; on anyone&amp;#39;s profile to jump straight in their DMs.&lt;br/&gt;&lt;br/&gt;⚙️ Settings Dangerzone Redesign: a beautiful Settings polish, along with a redesign of The Dangerzone.&lt;br/&gt;&lt;br/&gt;💌 New Invite Design: incoming invitations look significantly nicer. (and the &amp;#39;Notif Dot&amp;#39; displays on Pending Invites!).&lt;br/&gt;&lt;br/&gt;🖼️ Improved Popup UI Design: a well-needed polish to an old UI flow.&lt;br/&gt;&lt;br/&gt;📝 Improved Selection Highlights: a Vector-esque Gray is now used for the Selection Highlight colour.&lt;br/&gt;&lt;br/&gt;Fixed:&lt;br/&gt;📨 Fixed &amp;#39;slow/stuck&amp;#39; Group Chat messages: a race condition, plus many inefficiencies, were resolved in Group Chat messaging, making it feel significantly smoother and snappier.&lt;br/&gt;&lt;br/&gt;📪 Fixed automatic &amp;#39;Mark as Read&amp;#39;: on Windows particularly, &amp;#39;auto-Mark-as-Read&amp;#39; now works consistently.&lt;br/&gt;&lt;br/&gt;🐧 Fixed potential Linux Media crashes: on Linux, playable media is now displayed as regular File Attachments, preventing a crash when Videos or Audio cannot be loaded.&lt;br/&gt;&lt;br/&gt;🐱 Fixed &amp;#39;jitter&amp;#39; on first Emoji Panel open: the Emoji Panel rendering has been optimised, removing &amp;#39;jitter&amp;#39; when first opened.&lt;br/&gt;&lt;br/&gt;📺 Fixed intense &amp;#34;UI Flickering&amp;#34; in the Chatlist during sync: no more login seizures.&lt;br/&gt;&lt;br/&gt;👍 Fixed Reactions in Group Chats: for spamming 🍆 on every post until you&amp;#39;re inevitably banned.&lt;br/&gt;&lt;br/&gt;👥 Fixed newly-joined Group Chat bugs: they no longer drop to the bottom of your chatlist on join, and the &amp;#34;Header&amp;#34; is now clickable even if no messages were sent in the group yet.&lt;br/&gt;&lt;br/&gt;🎆 Fixed &amp;#39;PNG-Pill&amp;#39; on tiny images: Emoji-sized images now hide the File Extension Tag, a.k.a, the &amp;#34;PNG Pill&amp;#34;.&lt;br/&gt;&lt;br/&gt;🟢 Removed &amp;#39;Status Dot&amp;#39; from Group Chats: this is meant for people, not rooms.&lt;br/&gt;&lt;br/&gt;🖥️ Fixed excessive Group Chat re-renders: shaves some CPU usage from Group Chat UI.&lt;br/&gt;&lt;br/&gt;🖥️ Fixed excessive Typing Indicator events: shaves some CPU usage from Typing Indicators.&lt;br/&gt;&lt;br/&gt;🖥️ Fixed excessive Chat Timestamp re-renders: shaves some CPU usage from &amp;#39;last message&amp;#39; timestamp updates.&lt;br/&gt;&lt;br/&gt;🖱️ Fixed &amp;#34;Double Scrollbar&amp;#34; at startup: rarely, a &amp;#34;double&amp;#34; scrollbar displayed while Vector was booting.&lt;br/&gt;&lt;br/&gt;Learn More:&lt;br/&gt;&lt;a href=&#34;https://github.com/VectorPrivacy/Vector/releases/tag/v0.2.2&#34;&gt;https://github.com/VectorPrivacy/Vector/releases/tag/v0.2.2&lt;/a&gt;
    </content>
    <updated>2025-11-30T16:05:39Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs9emkr2r9w87csr4hkz0awzv3jygwfruuanhytnww52092svyhhlqzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg65xactu</id>
    
      <title type="html">Congratulations on the latest release! 🥳 Thanks for fighting ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs9emkr2r9w87csr4hkz0awzv3jygwfruuanhytnww52092svyhhlqzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg65xactu" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsp2d5vn84udegtyc48uam8vkf0384yqrq00rxc6hzz9w3pp9j67csunc8sg&#39;&gt;nevent1q…c8sg&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Congratulations on the latest release!  🥳 Thanks for fighting for the right to free speech and privacy. FOSS is the way.  💪&lt;br/&gt;&lt;br/&gt;
    </content>
    <updated>2025-11-23T21:18:29Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqswmefyllweh9ffra2qxj7zy6gpxantk9793lhhdh27uea9f3njcgszyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg659qda3</id>
    
      <title>Nostr event nevent1qqswmefyllweh9ffra2qxj7zy6gpxantk9793lhhdh27uea9f3njcgszyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg659qda3</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqswmefyllweh9ffra2qxj7zy6gpxantk9793lhhdh27uea9f3njcgszyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg659qda3" />
    <content type="html">
       &lt;img src=&#34;https://image.nostr.build/585f4d0afcc32df299cd79c0afd10d8b19b4b5d468f5e36f33b83a21e448503c.jpg&#34;&gt; 
    </content>
    <updated>2025-11-22T18:23:44Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqszn7l848klpyvffrxm0pn6sgkt6eaqz67093n0tsu00cytdkcrgyszyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6mpz28k</id>
    
      <title type="html">Another good day to choose private, encrypted messaging. ✅ ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqszn7l848klpyvffrxm0pn6sgkt6eaqz67093n0tsu00cytdkcrgyszyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6mpz28k" />
    <content type="html">
      Another good day to choose private, encrypted messaging.&lt;br/&gt;&lt;br/&gt;✅ Nostr accounts are supported&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://vectorapp.io&#34;&gt;https://vectorapp.io&lt;/a&gt;&lt;br/&gt;&lt;br/&gt; &lt;img src=&#34;https://image.nostr.build/70b07e869864f346c4c6d5494253d0c0d39e1fbb228d3f03a6020bf81c9c962c.jpg&#34;&gt; 
    </content>
    <updated>2025-11-15T13:10:01Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsrstmq6ch3hm5qypnu537dv6tm0xy2mwvsmvc8crwjq9wz74y23cgzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg67xlta6</id>
    
      <title type="html">&amp;#34;My North Star on the topic remains that all humans flourish ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsrstmq6ch3hm5qypnu537dv6tm0xy2mwvsmvc8crwjq9wz74y23cgzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg67xlta6" />
    <content type="html">
      &amp;#34;My North Star on the topic remains that all humans flourish under the protection of privacy; it creates a space for reflection and action which invariably leads to stronger personal conviction and the development of true identity. That&amp;#39;s what guides us, internally and alongside others, not the piece of plastic a government tosses at us.&amp;#34;&lt;br/&gt;—nprofile1qqsv7xnxmvek9q98l86qckdrnal6jmpsj3t2xxnu2038j5lrgcqsm5gu2ge59 &lt;br/&gt;&lt;br/&gt; &lt;img src=&#34;https://image.nostr.build/4fe8770b5b48ba0e5e2eba5e93d61a780e352d6669e114e5312eddb1b12f5946.jpg&#34;&gt; 
    </content>
    <updated>2025-11-14T08:43:33Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsv5peznvqqxjl934hw3qtkn4uhg3nxz3y7pudkh7esc7jfzqrfn8czyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6r7a32n</id>
    
      <title type="html">Always a good day to revisit A Cypherpunk&amp;#39;s Manifesto ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsv5peznvqqxjl934hw3qtkn4uhg3nxz3y7pudkh7esc7jfzqrfn8czyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6r7a32n" />
    <content type="html">
      Always a good day to revisit A Cypherpunk&amp;#39;s Manifesto&lt;br/&gt;&lt;a href=&#34;https://www.activism.net/cypherpunk/manifesto.html&#34;&gt;https://www.activism.net/cypherpunk/manifesto.html&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&amp;#34;Privacy is necessary for an open society in the electronic age. Privacy is not secrecy. A private matter is something one doesn&amp;#39;t want the whole world to know, but a secret matter is something one doesn&amp;#39;t want anybody to know. Privacy is the power to selectively reveal oneself to the world.&lt;br/&gt;&lt;br/&gt;If two parties have some sort of dealings, then each has a memory of their interaction. Each party can speak about their own memory of this; how could anyone prevent it? One could pass laws against it, but the freedom of speech, even more than privacy, is fundamental to an open society; we seek not to restrict any speech at all. If many parties speak together in the same forum, each can speak to all the others and aggregate together knowledge about individuals and other parties. The power of electronic communications has enabled such group speech, and it will not go away merely because we might want it to.&lt;br/&gt;&lt;br/&gt;Since we desire privacy, we must ensure that each party to a transaction have knowledge only of that which is directly necessary for that transaction. Since any information can be spoken of, we must ensure that we reveal as little as possible. In most cases personal identity is not salient. When I purchase a magazine at a store and hand cash to the clerk, there is no need to know who I am. When I ask my electronic mail provider to send and receive messages, my provider need not know to whom I am speaking or what I am saying or what others are saying to me; my provider only need know how to get the message there and how much I owe them in fees. When my identity is revealed by the underlying mechanism of the transaction, I have no privacy. I cannot here selectively reveal myself; I must always reveal myself.&lt;br/&gt;&lt;br/&gt;Therefore, privacy in an open society requires anonymous transaction systems. Until now, cash has been the primary such system. An anonymous transaction system is not a secret transaction system. An anonymous system empowers individuals to reveal their identity when desired and only when desired; this is the essence of privacy.&lt;br/&gt;&lt;br/&gt;Privacy in an open society also requires cryptography. If I say something, I want it heard only by those for whom I intend it. If the content of my speech is available to the world, I have no privacy. To encrypt is to indicate the desire for privacy, and to encrypt with weak cryptography is to indicate not too much desire for privacy. Furthermore, to reveal one&amp;#39;s identity with assurance when the default is anonymity requires the cryptographic signature.&lt;br/&gt;&lt;br/&gt;We cannot expect governments, corporations, or other large, faceless organizations to grant us privacy out of their beneficence. It is to their advantage to speak of us, and we should expect that they will speak. To try to prevent their speech is to fight against the realities of information. Information does not just want to be free, it longs to be free. Information expands to fill the available storage space. Information is Rumor&amp;#39;s younger, stronger cousin; Information is fleeter of foot, has more eyes, knows more, and understands less than Rumor.&lt;br/&gt;&lt;br/&gt;We must defend our own privacy if we expect to have any. We must come together and create systems which allow anonymous transactions to take place. People have been defending their own privacy for centuries with whispers, darkness, envelopes, closed doors, secret handshakes, and couriers. The technologies of the past did not allow for strong privacy, but electronic technologies do.&lt;br/&gt;&lt;br/&gt;We the Cypherpunks are dedicated to building anonymous systems. We are defending our privacy with cryptography, with anonymous mail forwarding systems, with digital signatures, and with electronic money.&lt;br/&gt;&lt;br/&gt;Cypherpunks write code. We know that someone has to write software to defend privacy, and since we can&amp;#39;t get privacy unless we all do, we&amp;#39;re going to write it. We publish our code so that our fellow Cypherpunks may practice and play with it. Our code is free for all to use, worldwide. We don&amp;#39;t much care if you don&amp;#39;t approve of the software we write. We know that software can&amp;#39;t be destroyed and that a widely dispersed system can&amp;#39;t be shut down.&lt;br/&gt;&lt;br/&gt;Cypherpunks deplore regulations on cryptography, for encryption is fundamentally a private act. The act of encryption, in fact, removes information from the public realm. Even laws against cryptography reach only so far as a nation&amp;#39;s border and the arm of its violence. Cryptography will ineluctably spread over the whole globe, and with it the anonymous transactions systems that it makes possible.&lt;br/&gt;&lt;br/&gt;For privacy to be widespread it must be part of a social contract. People must come and together deploy these systems for the common good. Privacy only extends so far as the cooperation of one&amp;#39;s fellows in society. We the Cypherpunks seek your questions and your concerns and hope we may engage you so that we do not deceive ourselves. We will not, however, be moved out of our course because some may disagree with our goals.&lt;br/&gt;&lt;br/&gt;The Cypherpunks are actively engaged in making the networks safer for privacy. Let us proceed together apace.&lt;br/&gt;&lt;br/&gt;Onward.&amp;#34;&lt;br/&gt;&lt;br/&gt;Eric Hughes&lt;br/&gt;March 9, 1993&lt;br/&gt;&lt;br/&gt; &lt;img src=&#34;https://image.nostr.build/52c2507c8f46e7f1a9fd7a8120df8b8fc106067c6dc19c231a7a0ee2a34e654b.jpg&#34;&gt; 
    </content>
    <updated>2025-11-13T04:36:29Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsgw5y8jdjgdes52hmnmssftl5r6azsaey7twcrw4q9m8uw4ua2h9qzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6xysx4u</id>
    
      <title type="html">Thank you for mentioning @nprofile…5jp4 in your writeup! 🙏 ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsgw5y8jdjgdes52hmnmssftl5r6azsaey7twcrw4q9m8uw4ua2h9qzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6xysx4u" />
    <content type="html">
      In reply to &lt;a href=&#39;/naddr1qq2hgjm0w3yksheh89vkkd65fdu4jvzp0g6xyq3q9hs0lg9vyd0lghayeju5fnflx0melawjrl8etuqln9gkhd4mwtxqxpqqqp65ws0g0ns&#39;&gt;naddr1qq…g0ns&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Thank you for mentioning &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nprofile1qqst37fwv8n363vx4eh7d9c0w0wslkufqyy43830g9a773zmhw5jergut5jp4&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;VectorPrivacy&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;nprofile…5jp4&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; in your writeup!  🙏 Stay tuned for more updates and be sure to follow &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nprofile1qqsdzvlvkzvk8flh5uzm7fgryj3zdl9vhag7hfhskxuhm7xqjvu2fjqz2tsc6&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;JSKitty&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;nprofile…tsc6&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; &amp;amp; &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nprofile1qqs980g43vqyq34quz2ul6rd8k4vau7x6uzvu7jzf3qqy9yu53yz97s7mhh2y&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;YuurinBee&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;nprofile…hh2y&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; for more in regards to Vector&amp;#39;s development&lt;br/&gt;&lt;br/&gt;  &lt;img src=&#34;https://image.nostr.build/332b5345cd1d265c51cc201fae227e1798a3c4e933dc7e255ed409a1e3822c6c.png&#34;&gt; 
    </content>
    <updated>2025-11-10T02:32:39Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs2ajwa6mtlr7v0kymxu0z2sr6tfg2t226gyucxd48zlx6hyzrmzmqzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg64xl5wx</id>
    
      <title type="html">Thank you for mentioning @nprofile…5jp4 in your writeup! 🙏 ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs2ajwa6mtlr7v0kymxu0z2sr6tfg2t226gyucxd48zlx6hyzrmzmqzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg64xl5wx" />
    <content type="html">
      In reply to &lt;a href=&#39;/naddr1qq2hgjm0w3yksheh89vkkd65fdu4jvzp0g6xyq3q9hs0lg9vyd0lghayeju5fnflx0melawjrl8etuqln9gkhd4mwtxqxpqqqp65ws0g0ns&#39;&gt;naddr1qq…g0ns&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Thank you for mentioning &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nprofile1qqst37fwv8n363vx4eh7d9c0w0wslkufqyy43830g9a773zmhw5jergut5jp4&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;VectorPrivacy&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;nprofile…5jp4&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; in your writeup!  🙏 Stay tuned for more updates and be sure to follow &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nprofile1qqsdzvlvkzvk8flh5uzm7fgryj3zdl9vhag7hfhskxuhm7xqjvu2fjqz2tsc6&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;JSKitty&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;nprofile…tsc6&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; &amp;amp; &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nprofile1qqs980g43vqyq34quz2ul6rd8k4vau7x6uzvu7jzf3qqy9yu53yz97s7mhh2y&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;YuurinBee&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;nprofile…hh2y&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; for more in regards to Vector&amp;#39;s development&lt;br/&gt;&lt;br/&gt;  &lt;img src=&#34;https://image.nostr.build/332b5345cd1d265c51cc201fae227e1798a3c4e933dc7e255ed409a1e3822c6c.png&#34;&gt; 
    </content>
    <updated>2025-11-10T02:32:21Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsqvwmrsxjjf40hvc4fy5q3qa8padn08825mt6am7yxtgnm2wvqcnqzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6gspd72</id>
    
      <title type="html">Remember, remember the 5th of November... Vector Open Beta ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsqvwmrsxjjf40hvc4fy5q3qa8padn08825mt6am7yxtgnm2wvqcnqzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6gspd72" />
    <content type="html">
      Remember, remember the 5th of November...&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Vector Open Beta (v0.2.1) Release&lt;br/&gt;&lt;br/&gt;&amp;gt;&amp;gt; 1 Click Login with Nostr&lt;br/&gt;&lt;br/&gt;We are happy to announce our official release of Vector Open Beta that now supports fully end-to-end encrypted Group Chats. Nostr users can login with their `nsec` keys, as Vector is built on the decentralized relay network known as Nostr.  Thanks to Nostr protocol and community for making this technology possible and publicly available. Vector is happy to share that it ascribes to the same open-source philosophy and aligning with like-minded people and communities. &lt;br/&gt;&lt;br/&gt;- Free, Open-Source  &lt;br/&gt;- No KYC (No Email, Phone, oAuth, etc.)  &lt;br/&gt;- No Data Collection  &lt;br/&gt;- No Ads/Spam  &lt;br/&gt;- Local Device Data Storage (P2P)  &lt;br/&gt;- Decentralized Relay Network (Nostr)&lt;br/&gt; &lt;br/&gt;&lt;br/&gt;Official Website:&lt;br/&gt;&lt;a href=&#34;https://vectorapp.io&#34;&gt;https://vectorapp.io&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Official GitHub:&lt;br/&gt;&lt;a href=&#34;https://github.com/VectorPrivacy/Vector&#34;&gt;https://github.com/VectorPrivacy/Vector&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt; &lt;img src=&#34;https://blossom.primal.net/4267da3fdb7d7ae67be3dc86a0b591e62311607b114d6662f23008d76df4e95e.png&#34;&gt; 
    </content>
    <updated>2025-11-05T14:30:38Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs9yn4gjcdm09p6ju77k37mrvvguu9670unukuq34v3tmngv9am95gzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg68pnrkg</id>
    
      <title type="html">Counting down... ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs9yn4gjcdm09p6ju77k37mrvvguu9670unukuq34v3tmngv9am95gzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg68pnrkg" />
    <content type="html">
      Counting down... &lt;br/&gt;&lt;br/&gt; &lt;img src=&#34;https://blossom.primal.net/df700b594c84ff305e85c713012bc1b0decb036a57b41bb0b6754c7ca9ac4baf.png&#34;&gt;  
    </content>
    <updated>2025-11-04T16:31:50Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsr46dke6ndjh6a84zvedkl8huw2xuyuuds4ufz8rvjlte55senr0qzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg62q4y47</id>
    
      <title type="html">Remember, remember... ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsr46dke6ndjh6a84zvedkl8huw2xuyuuds4ufz8rvjlte55senr0qzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg62q4y47" />
    <content type="html">
       &lt;br/&gt;Remember, remember...&lt;br/&gt;&lt;br/&gt; &lt;img src=&#34;https://blossom.primal.net/01be9d8136734fb66e75a00e9f7cc64696ff4e8ba9dad800ea4b4c84b874ab71.png&#34;&gt;  
    </content>
    <updated>2025-11-03T23:09:24Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsrp9h7n4h45rc4wa50epntru68xf6qn8cvqtuyz7ya79rth4a87kqzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6jzvklh</id>
    
      <title type="html">👁‍🗨Privacy Messengers ⚠️Not all &amp;#34;Privacy&amp;#34; ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsrp9h7n4h45rc4wa50epntru68xf6qn8cvqtuyz7ya79rth4a87kqzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6jzvklh" />
    <content type="html">
       &lt;br/&gt;👁‍🗨Privacy Messengers&lt;br/&gt;⚠️Not all &amp;#34;Privacy&amp;#34; apps were created equally&lt;br/&gt;&lt;br/&gt;There are degrees of privacy, as there are degrees of decentralization. Let&amp;#39;s explore what exactly privacy is when it comes to messenger apps. Vector is honored to be building on the Nostr protocol and along with the Nostr community. Check out our research below and comparison of different privacy messenger apps. &lt;br/&gt;&lt;br/&gt;Special thanks to &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nprofile1qythwumn8ghj7enfd36x2u3wdehhxarj9emkjmn9qyw8wumn8ghj76twv3jhsetj9e3k7unpvdkx2tnnda3kjctvqqspwwwexlwgcrrnwz4zwkze8rq3ncjug8mvgsd96dxx6wzs8ccndmcqdslk3&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;JeffG&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;nprofile…slk3&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; with &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nprofile1qy88wumn8ghj7mn0wvhxcmmv9uq3wamnwvaz7tmjv4kxz7fwwpexjmtpdshxuet59uqzqawhxlp5wfr3q2wyfpmtxvxj9ppg3fp80x6erghdfk4pcmq8a7hhwp9puf&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;White Noise&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;nprofile…9puf&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; for their development of Marmot protocol, which we have recently integrated as our Group Chat protocol for sleek, highly-secure, scalable groups and communities.&lt;br/&gt;&lt;br/&gt;If you want to show some love for Nostr-based apps, give us a share!&lt;br/&gt;&lt;br/&gt;&lt;br/&gt; &lt;img src=&#34;https://blossom.primal.net/706a74e404d2b051a2498004e6f99987fd598daf8a8053e88213b38bae333feb.png&#34;&gt;  
    </content>
    <updated>2025-10-31T20:33:32Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsre8gp47jcz3pyqedqwzqy2tg6msuvng2a80awz469hqf8x42xgdczyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6vu4c93</id>
    
      <title type="html">Congratulations, Odell! Homegrown is the way 🙇 🌱 Onwards ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsre8gp47jcz3pyqedqwzqy2tg6msuvng2a80awz469hqf8x42xgdczyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6vu4c93" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsz6q2l4zy2kzpmtn7qj903464zd49zwgaaudp92rwqap8yep6lhkcpzemhxue69uhhyetvv9ujuurjd9kkzmpwdejhg83v73j&#39;&gt;nevent1q…v73j&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Congratulations, Odell! Homegrown is the way 🙇 🌱 Onwards and upwards!
    </content>
    <updated>2025-10-31T20:22:21Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqszyrnk9wpf74a5hr8vrfa3zln5vrv76uwfn7k3uaa5chpxkpklpugzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6jg2x5d</id>
    
      <title type="html">◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢ Vector ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqszyrnk9wpf74a5hr8vrfa3zln5vrv76uwfn7k3uaa5chpxkpklpugzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6jg2x5d" />
    <content type="html">
      ◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢ &lt;br/&gt;Vector Beta available on GitHub!&lt;br/&gt;◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢ &lt;br/&gt;⚠️Privacy is a basic human right.&lt;br/&gt;◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢ &lt;br/&gt;&lt;br/&gt;#Nostr community, enjoy a simple login with your Nostr Account (nsec) and treat yourself to the Vector experience.&lt;br/&gt;&lt;br/&gt;◤◢ D O W N L O A D ◤◢ 【 v0.1.9 】&lt;br/&gt;&lt;a href=&#34;https://github.com/VectorPrivacy/Vector/releases/tag/v0.1.9&#34;&gt;https://github.com/VectorPrivacy/Vector/releases/tag/v0.1.9&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;#OpenSource #E2E #Privacy&lt;br/&gt;&lt;br/&gt; &lt;img src=&#34;https://image.nostr.build/9bf27269f58d2a0b3a1179d8287a6224e19a10d4dcbdb4af9a7937183a378096.jpg&#34;&gt; &lt;br/&gt;
    </content>
    <updated>2025-10-13T01:42:54Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqswjwzs6t5vhnxxrxeshgufyv77tw4tylqpf804w2l6zqv7j4wqm6szyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6amks62</id>
    
      <title type="html">This is precisely why Vector Privacy is built on #Nostr ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqswjwzs6t5vhnxxrxeshgufyv77tw4tylqpf804w2l6zqv7j4wqm6szyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6amks62" />
    <content type="html">
      This is precisely why Vector Privacy is built on #Nostr&lt;br/&gt;&lt;br/&gt; &lt;img src=&#34;https://image.nostr.build/c45d3a475e40c48e5ff9f66b9c965aadec8d47ea406c3c50a064c29f9e7e0c27.jpg&#34;&gt; &lt;br/&gt;&lt;br/&gt;&amp;#34;We never wanted any humans, any employees (to) have access to private messaging data.&amp;#34;&lt;br/&gt;&lt;br/&gt;— Pavel Durov, Founder of Telegram
    </content>
    <updated>2025-10-08T18:09:14Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqswp6pfuzj9wcuphxspex9tkmf46l6dggfcnet8xaayl4j0lz937lszyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6y8al0e</id>
    
      <title type="html">Vector Bot SDK has been released! ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqswp6pfuzj9wcuphxspex9tkmf46l6dggfcnet8xaayl4j0lz937lszyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6y8al0e" />
    <content type="html">
      Vector Bot SDK has been released!&lt;br/&gt;&lt;a href=&#34;https://github.com/VectorPrivacy/Vector-SDK&#34;&gt;https://github.com/VectorPrivacy/Vector-SDK&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;The Vector Bot Library is a Rust-based library for creating and managing vector bots that can send and receive private messages using the Nostr protocol. This library provides a structured and modular approach to building bots with configurable metadata and client settings.&lt;br/&gt;&lt;br/&gt;Features:&lt;br/&gt;- Create vector bots with customizable metadata&lt;br/&gt;- Send and receive private messages&lt;br/&gt;- Handle notifications for gift wrap events&lt;br/&gt;- Configure proxy settings for .onion relays&lt;br/&gt;- Add and manage relays&lt;br/&gt;- Modular architecture for easy extension and maintenance&lt;br/&gt;&lt;br/&gt; &lt;br/&gt;Special thanks to Luke Larsen at PIVX Labs for this Vector ecosystem contribution!&lt;br/&gt;&lt;br/&gt; &lt;img src=&#34;https://image.nostr.build/f7f1f9d5ac625ab5b72b74d08f5db6db825ca7eb06336a0fe5a56beea700608d.jpg&#34;&gt; 
    </content>
    <updated>2025-09-04T16:27:20Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs98f9tr8mkdkgm42h5cqg9led9t7k9n0c8m9e7trjppm869y8h2hszyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6wkl5vf</id>
    
      <title>Nostr event nevent1qqs98f9tr8mkdkgm42h5cqg9led9t7k9n0c8m9e7trjppm869y8h2hszyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6wkl5vf</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs98f9tr8mkdkgm42h5cqg9led9t7k9n0c8m9e7trjppm869y8h2hszyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6wkl5vf" />
    <content type="html">
       &lt;img src=&#34;https://image.nostr.build/bf5ce6b8e51ae5fe25ed842709d8f84787f191d6ca2570a266b83d3b479ef858.jpg&#34;&gt; &lt;br/&gt;&lt;br/&gt;⚠️KYC = Know You&amp;#39;re Compromised&lt;br/&gt;&lt;br/&gt;Privacy for Protection.&lt;br/&gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Download Vector Beta &amp;lt;&amp;lt;&amp;lt;&lt;br/&gt;&lt;a href=&#34;http://vectorapp.io&#34;&gt;http://vectorapp.io&lt;/a&gt;
    </content>
    <updated>2025-08-27T06:07:03Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsr20zsw0wwddd97uelettrc2shxymsdah2wfpahr3eszk2ed98qmczyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg607wegm</id>
    
      <title type="html">Good afternoon, Nostr. Among all of the turmoil in the world, ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsr20zsw0wwddd97uelettrc2shxymsdah2wfpahr3eszk2ed98qmczyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg607wegm" />
    <content type="html">
      Good afternoon, Nostr.&lt;br/&gt;&lt;br/&gt;Among all of the turmoil in the world, stay positive. Be a beacon of hope for humanity. We leave you with this quote by Buckminster Fuller...&lt;br/&gt;&lt;br/&gt;&amp;#34;You never change things by fighting the existing reality. To change something, build a new model that makes the existing model obsolete.&amp;#34;
    </content>
    <updated>2025-08-18T18:33:55Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs23mhfas9mtfd9g6qw32fxrmcrkc268cvkja6sp63u0aek9k2uzsszyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6rf6srp</id>
    
      <title type="html">Thank you, Nostr! Check out our Open-Source Privacy Messenger App ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs23mhfas9mtfd9g6qw32fxrmcrkc268cvkja6sp63u0aek9k2uzsszyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6rf6srp" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsrvgu988d5zj4camqq32t83gephh6c6w47wrugqatksw7z7dl9qfchk6dla&#39;&gt;nevent1q…6dla&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Thank you, Nostr!&lt;br/&gt;&lt;br/&gt;Check out our Open-Source Privacy Messenger App built on Nostr:&lt;br/&gt;&lt;a href=&#34;https://vectorapp.io&#34;&gt;https://vectorapp.io&lt;/a&gt; &lt;br/&gt;&lt;br/&gt;Beta Invite Code: B4TZJAUV&lt;br/&gt;&lt;br/&gt; &lt;img src=&#34;https://image.nostr.build/c495121fdc31fa57255c5a085d3ffa591c11545ccb0c1c56d992dc9481a5fff5.jpg&#34;&gt; 
    </content>
    <updated>2025-08-14T14:03:16Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsyuz6nnq2945zdrfwctvq80cjfpdd2huumfr2v70e3jr48crwzalgzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6vcxv6m</id>
    
      <title type="html">Invite Code: B4TZJAUV Thank you for sharing this. We have it ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsyuz6nnq2945zdrfwctvq80cjfpdd2huumfr2v70e3jr48crwzalgzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6vcxv6m" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqstr6e5r4rhpu3g0zazg5q4nlkssv6tzv9dpwy2mtmsw8ur2huavts2nkmwf&#39;&gt;nevent1q…kmwf&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Invite Code: B4TZJAUV&lt;br/&gt;&lt;br/&gt;Thank you for sharing this. We have it pinned on our social media, but will update our Nostr profile to help reflect this as well. We are testing out an invite system in Beta and working on a badge system. Would love to have your honest feedback!
    </content>
    <updated>2025-08-14T14:00:22Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqst036q692upvazx06guk92rva0fwhq38ggv5gapsmqfrph7g8xtagzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg67vce6v</id>
    
      <title type="html">The link above is not working, the correct link is: ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqst036q692upvazx06guk92rva0fwhq38ggv5gapsmqfrph7g8xtagzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg67vce6v" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs00gz0kqcf8ymm2md6sqt99e7kgstm7vg8ts79uf5srgngw3wt8as4sw7n5&#39;&gt;nevent1q…w7n5&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;The link above is not working, the correct link is:&lt;br/&gt;&lt;a href=&#34;https://vectorapp.io&#34;&gt;https://vectorapp.io&lt;/a&gt;
    </content>
    <updated>2025-08-11T23:58:03Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs00gz0kqcf8ymm2md6sqt99e7kgstm7vg8ts79uf5srgngw3wt8aszyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6v4ekuv</id>
    
      <title type="html">The new privacy standard emerges, thanks to Nostr. Test out ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs00gz0kqcf8ymm2md6sqt99e7kgstm7vg8ts79uf5srgngw3wt8aszyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6v4ekuv" />
    <content type="html">
      The new privacy standard emerges, thanks to Nostr.&lt;br/&gt;&lt;br/&gt;Test out Vector (Beta), our privacy messenger app:&lt;br/&gt;-&amp;gt; &lt;a href=&#34;https://www.vectorapp.io&#34;&gt;https://www.vectorapp.io&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;⚠️#PrivacyisaBasicHumanRight&lt;br/&gt; &lt;img src=&#34;https://image.nostr.build/a6a4643835a9057b47a7220142cb6a7a2973e459252252e0e161d9db980c9a4e.png&#34;&gt; 
    </content>
    <updated>2025-08-11T23:31:33Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsy6xsjj3af7kta4q6qrzlak4pl3ztnfkeglx0rt8z3m93l4u432sgzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6klf625</id>
    
      <title type="html">◤◢◤◢◤◢◤◢◤◢ E R R O R ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsy6xsjj3af7kta4q6qrzlak4pl3ztnfkeglx0rt8z3m93l4u432sgzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6klf625" />
    <content type="html">
      ◤◢◤◢◤◢◤◢◤◢ E R R O R ◤◢◤◢◤◢◤◢◤◢&lt;br/&gt;————————————————————————&lt;br/&gt;█▒▒▒▒▒▒▒▒▒ Human Rights failed to load. &lt;br/&gt;————————————————————————&lt;br/&gt;&amp;gt;&amp;gt; Please download [vectorapp.io] and try again...&lt;br/&gt;&lt;br/&gt;⚠️Privacy is a basic human right.&lt;br/&gt;&lt;br/&gt; &lt;img src=&#34;https://image.nostr.build/12dc8c080ce92f8b7e4ccc80b631afe255f0be18bb71deb810193e9695434655.jpg&#34;&gt; 
    </content>
    <updated>2025-08-06T20:36:58Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsxwmfx0ft8saufklr5hc8jyh539e75c7eglhyqavaz5w48j939fkszyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6lu3ass</id>
    
      <title type="html">💯 Permissionless Tech &#43; Permissionless Design</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsxwmfx0ft8saufklr5hc8jyh539e75c7eglhyqavaz5w48j939fkszyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6lu3ass" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsxfgh7wmzgqm7ykkfzux9vz8tr2tnvx4wz69m0cfj6z27py8z83rcgpergr&#39;&gt;nevent1q…ergr&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;💯 Permissionless Tech &#43; Permissionless Design
    </content>
    <updated>2025-08-06T05:26:58Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsgkwkxjng0jfls0asx640yz0ftp5syj525uuguvsrv6wmjyawwl8gzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6zppwz5</id>
    
      <title type="html">Thanks for reporting, we have redirected it to our GitHub for the ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsgkwkxjng0jfls0asx640yz0ftp5syj525uuguvsrv6wmjyawwl8gzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6zppwz5" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqspjdme2jj9s3wcs9x7lcnret6mdvaa3cuwff8ce5g5knkwd2gm6vsc8ps5a&#39;&gt;nevent1q…ps5a&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Thanks for reporting, we have redirected it to our GitHub for the time being.
    </content>
    <updated>2025-07-26T21:46:48Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqstyam6fcxmy7x6nyvuywzeppe8g2v07zxmvmur26zx8p5nc3vw24qzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6th725p</id>
    
      <title type="html">&amp;#34;Just feels like freedom&amp;#34; - @npub1uvx…ttjz ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqstyam6fcxmy7x6nyvuywzeppe8g2v07zxmvmur26zx8p5nc3vw24qzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6th725p" />
    <content type="html">
      &lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;#34;Just feels like freedom&amp;#34; - &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1uvxhy0nvcfg9xvh8stpr25du3u5ads5fl5ujljzmvlp6sn4j8epspgttjz&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;russfranky&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1uvx…ttjz&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;  &lt;img src=&#34;https://image.nostr.build/f50934e5704567f02259992bd6cd2497abe30bde3e2c9f9bdd788315927285e7.jpg&#34;&gt; &lt;br/&gt;&lt;br/&gt;◤◢◤◢◤◢◤◢◤◢ &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nprofile1qqst37fwv8n363vx4eh7d9c0w0wslkufqyy43830g9a773zmhw5jergut5jp4&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;VectorPrivacy&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;nprofile…5jp4&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;  ◤◢◤◢◤◢◤◢◤◢&lt;br/&gt;&lt;br/&gt;We&amp;#39;d love to hear the community&amp;#39;s feedback so far on #VectorBeta and what all you all like, don&amp;#39;t like, what you&amp;#39;d like to see improved, new features (non-stop development), and more. &lt;br/&gt;&lt;br/&gt;Comment below and let us know!
    </content>
    <updated>2025-07-25T20:25:25Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqswez0pfezrgrf8rxw6yynjf9k9hwc4a6h9cfy2e0nzexw9kva6kvqzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6xaez50</id>
    
      <title type="html">◤◢◤◢◤◢◤◢ V E C T O R ◤◢◤◢◤◢◤◢ ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqswez0pfezrgrf8rxw6yynjf9k9hwc4a6h9cfy2e0nzexw9kva6kvqzyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6xaez50" />
    <content type="html">
      ◤◢◤◢◤◢◤◢  V E C T O R  ◤◢◤◢◤◢◤◢&lt;br/&gt;“No–Compromise Encryption”&lt;br/&gt;&lt;br/&gt;In an era where data breaches and privacy violations are rampant, the Vector Privacy app emerges as a vital tool to empower individuals to protect their personal information. With massive data leaks exposing billions of records—such as the 2024 breach of 2.9 billion records from National Public Data or the 16 billion credentials leak involving major platforms like Google and Facebook. Every day, citizens face unprecedented risks from identity theft, phishing, and surveillance by nefarious actors and this only grows worse with time. Vector Privacy addresses these threats with a user-centric approach to privacy and security, offering robust features to help users reclaim control over their digital lives.&lt;br/&gt;&lt;br/&gt;Proactive Privacy Protection&lt;br/&gt;&lt;br/&gt;Vector Privacy prioritizes user empowerment and freedom through accessible and open-source technology, aligning with Edward Snowden’s assertion that “privacy is not about something to hide. It’s about something to protect.” The app employs end-to-end encryption for data both in transit and at rest, addressing the gap highlighted in recent studies where only 10% of organizations encrypt at least 80% of their cloud-stored data. By encrypting user communications and stored information, Vector Privacy ensures that even if a breach occurs, intercepted data remains unreadable to unauthorized parties.&lt;br/&gt;&lt;br/&gt;Nostr Protocol &amp;amp; Encryption&lt;br/&gt;&lt;br/&gt;Vector utilizes Nostr Protocol and specifically the NIP-17 Standard, which enables secure and private direct messaging by using NIP-44 encryption and NIP-59 seals and gift wraps. This means that chat messages are sent as plain text tagged with the receiver’s public key and optional relay URLs, while enhancing privacy through sender verification, randomized timestamps, and kind 10050 events to specify preferred message-receiving relays, ensuring lightweight and secure communication. In layman’s terms, this means the message is encrypted from A to B, then put through an obfuscation layer to mask the metadata, and finally it goes through the last layer of the protocol which is called “gift wrapping”.&lt;br/&gt;&lt;br/&gt;Combating Data Leaks and Breaches&lt;br/&gt;&lt;br/&gt;Data leaks, often caused by human error or misconfigured systems like AWS S3 buckets, can expose sensitive information such as names, addresses, financial information, biometric data, and virtually everything there is to know about a person. Vector Privacy mitigates these risks by offering tools to minimize data exposure. Since sensitive information including chat logs are not stored on a centralized server, there is no single point of attack that can compromise the user’s data and privacy. The power solely relies in the hands of the user, taking secure and intelligent security measures to store their private key(s).&lt;br/&gt;&lt;br/&gt;Thwarting Nefarious Actors&lt;br/&gt;&lt;br/&gt;Nefarious actors exploit stolen credentials for phishing, account takeovers, and identity theft, as seen in the 2024 Snowflake attack affecting over half a billion Ticketmaster users. Vector Privacy counters these threats with multifactor authentication (MFA), which significantly reduces the risk of unauthorized access, even if passwords are compromised. Snowden’s warning that “under observation, we act less free” resonates here. By utilizing the Vector No-Compromise Encryption protocol, no third party can see or have access to a user’s files, unless their individual device is compromised. Even if a user’s device is compromised, Vector’s database is locally encrypted and completely unreadable unless unlocked, which requires the user’s pin code. &lt;br/&gt;&lt;br/&gt;User-Friendly Security for All&lt;br/&gt;&lt;br/&gt;Unlike complex cybersecurity solutions, Vector Privacy is designed for everyday users, not just tech experts. Its intuitive interface guides users through setting up secure communication channels and easily managing custom preferences and settings. By fostering awareness and providing actionable tools, the app aligns with Snowden’s call to “take privacy back,” empowering citizens to protect their digital identities without needing advanced technical knowledge.  No longer do you have to compromise security for convenience. One of the biggest issues with high-level encryption is that your ordinary user has no understanding or technical knowledge to be able to setup a secure system and that is why Vector exists, to remove that barrier entry. &lt;br/&gt;&lt;br/&gt;A Step Toward Digital Freedom&lt;br/&gt;&lt;br/&gt;In a world where a single breach can expose billions of records, Vector Privacy stands out as a beacon of user empowerment and digital aegis of protection. By combining a decentralized network with peer-to-peer encryption, it directly addresses the privacy and security issues that threaten citizens daily. Vector Privacy helps ensure that this fundamental right is not just preserved but actively defended, giving users the tools to safeguard their data from leaks, breaches, and nefarious actors. For more technical details, check Vector Privacy’s official documentation at &lt;a href=&#34;https://github.com/VectorPrivacy&#34;&gt;https://github.com/VectorPrivacy&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;🔰Vector v0.1.7 - ᛒeta&lt;br/&gt;Invite Code: B4TZJAUV&lt;br/&gt;&lt;a href=&#34;https://github.com/VectorPrivacy/Vector/releases/tag/v0.1.7&#34;&gt;https://github.com/VectorPrivacy/Vector/releases/tag/v0.1.7&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;#VectorPrivacy #Vector #Nostr&lt;br/&gt;&lt;br/&gt; &lt;img src=&#34;https://blossom.primal.net/f1bc9201708d382465e0517b92d4d1761a642596888a7dec655bc6c9b40ef019.png&#34;&gt;  
    </content>
    <updated>2025-07-17T22:08:49Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqstq5wvmpp6ffk8atf9hvnxz92jrfklkg83fvjc0m6eag4s5t5lf2czyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6228uew</id>
    
      <title type="html">“It seemed so obvious to me: Here we are faced with the ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqstq5wvmpp6ffk8atf9hvnxz92jrfklkg83fvjc0m6eag4s5t5lf2czyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6228uew" />
    <content type="html">
      “It seemed so obvious to me: Here we are faced with the problems of loss of privacy, creeping computerization, massive databases, more centralization—and [David] Chaum offers a completely different direction to go in, one which puts power into the hands of individuals rather than governments and corporations. The computer can be used as a tool to liberate and protect people, rather than to control them.”&lt;br/&gt;&lt;br/&gt;—Hal Finney, Cypherpunks Mailing List, 1992
    </content>
    <updated>2025-07-14T22:42:34Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsv5656x4pzd37pxz462z4ywmv59afg7m82xewf2c5hkuvxuqx0pkczyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6cn34rz</id>
    
      <title type="html">://VectorBeta.exe Installing... █████████▒░ ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsv5656x4pzd37pxz462z4ywmv59afg7m82xewf2c5hkuvxuqx0pkczyzu0jtnpuuw5tp4wdlnfwrmnm58ahzgpp9vfut6p00h5gkam4ykg6cn34rz" />
    <content type="html">
      ://VectorBeta.exe&lt;br/&gt;&lt;br/&gt;Installing...&lt;br/&gt;█████████▒░&lt;br/&gt; &lt;br/&gt;&lt;br/&gt; &lt;img src=&#34;https://blossom.primal.net/bc705b812bd6c6d705dd02360edfe02d76bea8dd04cce99f2b850794f310e9ed.jpg&#34;&gt;  
    </content>
    <updated>2025-07-14T17:13:43Z</updated>
  </entry>

</feed>