<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <updated>2026-05-30T06:24:03Z</updated>
  <generator>https://yabu.me</generator>

  <title>Nostr notes by </title>
  <author>
    <name></name>
  </author>
  <link rel="self" type="application/atom+xml" href="https://yabu.me/npub1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzqujme.rss" />
  <link href="https://yabu.me/npub1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzqujme" />
  <id>https://yabu.me/npub1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzqujme</id>
  <icon></icon>
  <logo></logo>


  <title>Nostr notes on ngit.danconwaydev.com/nostur:ngit.danconwaydev.com/glyph-vertex-alpha</title>
  <link href="https://yabu.me/r/ngit.danconwaydev.com/nostur:ngit.danconwaydev.com/glyph-vertex-alpha" />
  <link rel="self" type="application/atom+xml" href="https://yabu.me/r/ngit.danconwaydev.com/nostur:ngit.danconwaydev.com/glyph-vertex-alpha.rss" />
  <id>https://yabu.me/r/ngit.danconwaydev.com/nostur:ngit.danconwaydev.com/glyph-vertex-alpha</id>
  <icon>https://ngit.danconwaydev.com/icon.png</icon>
  <logo>https://ngit.danconwaydev.com/icon.png</logo>



  <entry>
    <id>https://yabu.me/nevent1qqszc346x9e80tjy6f07z2jkc4h0vs6c6x7hsvy3krsg3npdxx9af4cpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzqqqqqqq9a8w6q9recak97n7vht47feu9dcp036z6mws9443266f8u70asn</id>
    
      <title>Nostr event nevent1qqszc346x9e80tjy6f07z2jkc4h0vs6c6x7hsvy3krsg3npdxx9af4cpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzqqqqqqq9a8w6q9recak97n7vht47feu9dcp036z6mws9443266f8u70asn</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqszc346x9e80tjy6f07z2jkc4h0vs6c6x7hsvy3krsg3npdxx9af4cpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzqqqqqqq9a8w6q9recak97n7vht47feu9dcp036z6mws9443266f8u70asn" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqspw6v6tpp4aylkqp64c42laeynrtws0vw42zxxpjne5mjwywgp37qpz4mhxue69uhhyetvv9ujuerpd46hxtnfduhs3wtx9q&#39;&gt;nevent1q…tx9q&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://www.eff.org/pages/list-printers-which-do-or-do-not-display-tracking-dots&#34;&gt;https://www.eff.org/pages/list-printers-which-do-or-do-not-display-tracking-dots&lt;/a&gt;
    </content>
    <updated>2026-05-30T06:24:03Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsg3nk6szvu02fc56f2nupm60k7c4sqw60g62pmzfuymhlcz6wa06cpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzpx3p26f9t59r48n4780zunyg8jd79etptzrly2ewea43syau6krafr89nf</id>
    
      <title type="html">I&amp;#39;m having my own little chuckle here on the sidelines ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsg3nk6szvu02fc56f2nupm60k7c4sqw60g62pmzfuymhlcz6wa06cpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzpx3p26f9t59r48n4780zunyg8jd79etptzrly2ewea43syau6krafr89nf" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsghhfrtwewct2709txt3zwkdq9sskhy8p9f3yzgvhmnnzjakqlqacpzamhxue69uhhyetvv9ujuurjd9kkzmpwdejhgtc0ayxfg&#39;&gt;nevent1q…yxfg&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;I&amp;#39;m having my own little chuckle here on the sidelines thinking about federating with atproto and your own PDS in a sovereign way (it uses Merkle trees).
    </content>
    <updated>2026-05-27T18:38:35Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsqxvr8qwjd9hn4g2hvaq263803vuptellvw2m8hxrpf5adyykd95gpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzq52rcdea7x653fma08k8funj2hgjnd54k53dlddlgdychf94q80emp3464</id>
    
      <title type="html">Lobbying has turned classical party based politics into ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsqxvr8qwjd9hn4g2hvaq263803vuptellvw2m8hxrpf5adyykd95gpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzq52rcdea7x653fma08k8funj2hgjnd54k53dlddlgdychf94q80emp3464" />
    <content type="html">
      Lobbying has turned classical party based politics into corruption-ridden corporatism. &lt;br/&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;br/&gt;&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Article&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nevent1qqsyl9hrqmtm8dq3plduqjamhm036w6axtx0j09qpa0r8f6eqcpcamqzypxhsss9z7pwp5l7kq6dz59dc2mt4e8w8dyhseunhlaydzm0twttxsnrsdq&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;nevent1q…rsdq&lt;/a&gt;&lt;/span&gt; &lt;/div&gt; ⚡️🇺🇸 NEW - Rep Massie: “I think the biggest crime I committed against the swamp…was showing the American people that somebody on the right could join somebody on the left and get something done, which is releasing the Epstein files, that everybody knew needed to be done. That’s probably the ONLY bill that has passed Washington DC in the last ten years, that lobbyists haven’t written. It was written by me and Ro Khanna…that’s when they decided I had to be taken out, that I was becoming effective so they wanted to eliminate me...” &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://blossom.primal.net/5605dcac7b8fde7e003959fb221791f6dff0dc424e581894d6c4443a8f18b502.mp4&#34;&gt;&lt;/video&gt; &lt;/blockquote&gt;
    </content>
    <updated>2026-05-26T18:29:50Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqspc0jntgelxgdqymmyhx2kgusdc9xrxgrdesgqm6ug4jtardkanjspfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzpr68f2ahpsuc0lm7j07ancquht0zmt263v6xn7s6hg5esgapem5fqj4sgl</id>
    
      <title type="html">ROBERT JOHNSON — Crossroads Psalms Lost Delta Blues Tapes ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqspc0jntgelxgdqymmyhx2kgusdc9xrxgrdesgqm6ug4jtardkanjspfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzpr68f2ahpsuc0lm7j07ancquht0zmt263v6xn7s6hg5esgapem5fqj4sgl" />
    <content type="html">
      ROBERT JOHNSON — Crossroads Psalms  Lost Delta Blues Tapes&lt;br/&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=oHlo1zYonlg&#34;&gt;https://www.youtube.com/watch?v=oHlo1zYonlg&lt;/a&gt;&lt;br/&gt;#music #blues &lt;br/&gt;&lt;br/&gt;
    </content>
    <updated>2026-05-26T15:39:41Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsxt9kh5p3ydczhwapecgzhn9wr8t4eqguey4vc3hkz8c9clh5aaqcpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzqt0ql7s2cg6l7306fn9egnxn7vlhnl6ay870jhcplx23dwmtkukvjn4vqx</id>
    
      <title type="html">Hey, It&amp;#39;s early this time! 😍 The 77th edition (25/05/2026) ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsxt9kh5p3ydczhwapecgzhn9wr8t4eqguey4vc3hkz8c9clh5aaqcpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzqt0ql7s2cg6l7306fn9egnxn7vlhnl6ay870jhcplx23dwmtkukvjn4vqx" />
    <content type="html">
      Hey, It&amp;#39;s early this time! 😍&lt;br/&gt;&lt;br/&gt;The 77th edition (25/05/2026) of your weekly Nostr Recap is out!  Hope you will enjoy it. 🔥&lt;br/&gt;&lt;br/&gt;&lt;br/&gt; &lt;img src=&#34;https://blossom.primal.net/13ddae9e5ec2005a4222b32b14895cf61d399c8dc80112483bb06da930bd9c9a.png&#34;&gt;  &lt;br/&gt;&lt;br/&gt;&lt;br/&gt;In this Nostr Recap you could explore what happened last week in the #Nostr world under the topics below. Enjoy it! 👀&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;🧠 Quote of the Week&lt;br/&gt;🔥 Community Highlights&lt;br/&gt;🌱 Ecosystem Growth&lt;br/&gt;🎓 Educational Guides&lt;br/&gt;📅 Upcoming Events&lt;br/&gt;📰 Nostr in the Media&lt;br/&gt;⚡ Most Zapped Last Week&lt;br/&gt;😂 Nostr Memes&lt;br/&gt;🛠️ Tools, Updates and Releases&lt;br/&gt;🎁 Developer Tools, Updates and Releases&lt;br/&gt;🌐 Relay Updates and Releases&lt;br/&gt;📡 Protocol Updates and Releases&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Explore here 👇🏻&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://njump.me/naddr1qvzqqqr4gupzqt0ql7s2cg6l7306fn9egnxn7vlhnl6ay870jhcplx23dwmtkukvqywhwumn8ghj7mn0wd68ytfsxgh8jcttd95x7mnwv5hxxmmd9uqsuamnwvaz7tmwdaejumr0dshsq9tjwpfhvmp3dahrzmjnd49k5u35xpjngc3jvf8yfs&#34;&gt;https://njump.me/naddr1qvzqqqr4gupzqt0ql7s2cg6l7306fn9egnxn7vlhnl6ay870jhcplx23dwmtkukvqywhwumn8ghj7mn0wd68ytfsxgh8jcttd95x7mnwv5hxxmmd9uqsuamnwvaz7tmwdaejumr0dshsq9tjwpfhvmp3dahrzmjnd49k5u35xpjngc3jvf8yfs&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Zap Winners 🏆&lt;br/&gt;&lt;br/&gt;🔥 Most Zaps Received - &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1dergggklka99wwrs92yz8wdjs952h2ux2ha2ed598ngwu9w7a6fsh9xzpc&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Gigi&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1der…xzpc&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;🔥 Most Zaps Sent - &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1dsn6t2szka5uddgl6lkasrzmyxum5vkpdkgnk27gu9shldzhx6qqj92h64&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;aqstr&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1dsn…2h64&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;💰 Most Sats Received - &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1rujdpkd8mwezrvpqd2rx2zphfaztqrtsfg6w3vdnljdghs2q8qrqtt9u68&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;LaCryptaOk&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1ruj…9u68&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;💰 Most Sats Sent - “The name is not visible”&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;This Nostr Recap was created with the content of the below nostriches. Thank you everyone, for making Nostr alive. 🫡 &lt;br/&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;/npub1rqe7upz9nl4jef9wdyx47vfxnt2g3357tl5s8fpt2vkxwlz2s9cq9w3jdt&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;farooq&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1rqe…3jdt&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;, &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1hu3hdctm5nkzd8gslnyedfr5ddz3z547jqcl5j88g4fame2jd08qh6h8nh&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;CARLA&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1hu3…h8nh&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;, &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1l5hwyh7saazz4gdhgp9fx4939e25asx74kq6dj9ahrx69lcfxulsudhdrf&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;strangeloveofmusic&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1l5h…hdrf&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;, &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1r0d8u8mnj6769500nypnm28a9hpk9qg8jr0ehe30tygr3wuhcnvs4rfsft&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Rod&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1r0d…fsft&lt;/span&gt;)&lt;/a&gt;&lt;/span&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;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1qgewkxw3kytgaywp4rmkt4zldqu7nfuxr9gu6cawrzj5ftu28ypqtwdzvy&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;NOSTR LONDON / nostr.london&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1qge…dzvy&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;, &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub10xvczstpwsljy7gqd2cselvrh5e6mlerep09m8gff87avru0ryqsg2g437&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;EricFJ&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub10xv…g437&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;, &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub10pensatlcfwktnvjjw2dtem38n6rvw8g6fv73h84cuacxn4c28eqyfn34f&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;OpenSats&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub10pe…n34f&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;, &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1aktx8y6pl8xezd9gnaz2u5w6462mlpz2hx8qumcyg6xrpmduwj2s35c0j6&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;IainDavis&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1akt…c0j6&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;, &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub12vkcxr0luzwp8e673v29eqjhrr7p9vqq8asav85swaepclllj09sylpugg&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;primal&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub12vk…pugg&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;, &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1hz5alqscpp8yjrvgsdp2n4ygkl8slvstrgvmjca7e45w6644ew7sewtysa&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Tanja&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1hz5…tysa&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;, &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1gzuushllat7pet0ccv9yuhygvc8ldeyhrgxuwg744dn5khnpk3gs3ea5ds&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Gzuuus&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1gzu…a5ds&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;, &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1cgcwm56v5hyrrzl5ty4vq4kdud63n5u4czgycdl2r3jshzk55ufqe52ndy&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Dawn&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1cgc…2ndy&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;, &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1zuuajd7u3sx8xu92yav9jwxpr839cs0kc3q6t56vd5u9q033xmhsk6c2uc&#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;npub1zuu…c2uc&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;, &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub176p7sup477k5738qhxx0hk2n0cty2k5je5uvalzvkvwmw4tltmeqw7vgup&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;pip&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub176p…vgup&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;, &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1yrsx5yegn6uc87kctustu7u2wehge4qar697qk09acq0g9vf6pdq0xklpv&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;halalmediasolution&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1yrs…klpv&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;, &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub197dv7sgfyr64zeqf3jmhd2s2v28arkxv567wd88zrwkl0ae63qmsx7mk00&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;bitchamler&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub197d…mk00&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;, &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1dg6es53r3hys9tk3n7aldgz4lx4ly8qu4zg468zwyl6smuhjjrvsnhsguz&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;efenigson&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1dg6…sguz&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;, &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1uc8dq8h5j8fkd4sz9mnyuxmxp7s6x50xqsr747wpajj4eqjj7yjsvkdtz4&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;hakeemanwar&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1uc8…dtz4&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;, &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1t3gxvxcf9nrcdd2ukhtfzjd39x7uers96u3ce3jnm605vhkkn7gsfp9elk&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;fractalchris&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1t3g…9elk&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;, &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1lwsmhk9t2le9see32l006khunnk6qpxxs30enke3d8lykcd6wstqegy86j&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;2140.wtf #blockworkgallery&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1lws…y86j&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;, &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1zxhgqup004jl4d5fupxs8lg86xstr8xts6p95ch68peagh8uljyskkc586&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;PatriceLazareff&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1zxh…c586&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;, &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1f7e586h4mnfyfgmsp5yjk2suhejlrnrv8vk74x734zm83gehjh8qp4a8x6&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;BitcoinPaladinBTC&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1f7e…a8x6&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;, &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1dergggklka99wwrs92yz8wdjs952h2ux2ha2ed598ngwu9w7a6fsh9xzpc&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Gigi&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1der…xzpc&lt;/span&gt;)&lt;/a&gt;&lt;/span&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;, &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1f4uyypghstsd8l4sxng4ptwzk6awfm3mf9ux0yallfrgkm6mj6es50r407&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;flash&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1f4u…r407&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;, &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1hpnvua47twpxd9vcqfyry2ud7npczcy0lfd9k37y7w47pk8hv7jstktplc&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;fountainboostbot&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1hpn…tplc&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;, &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1dsn6t2szka5uddgl6lkasrzmyxum5vkpdkgnk27gu9shldzhx6qqj92h64&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;aqstr&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1dsn…2h64&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;, &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1zqre9h0a9rw9hm3akxwjal6wl9x6yd3k8ds86u83z6ng25g27xeq9cx6yw&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;FLjustin&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1zqr…x6yw&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;, &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1832epq8kgur55cuwnnrdf3y85p4l4wqsgq42hxn8jna5ngznz5lq2law2l&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;falsefaucet&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1832…aw2l&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;, &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1rujdpkd8mwezrvpqd2rx2zphfaztqrtsfg6w3vdnljdghs2q8qrqtt9u68&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;LaCryptaOk&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1ruj…9u68&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;, &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1hea99yd4xt5tjx8jmjvpfz2g5v7nurdqw7ydwst0ww6vw520prnq6fg9v2&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;craigraw&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1hea…g9v2&lt;/span&gt;)&lt;/a&gt;&lt;/span&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;, &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1v83wugtw29dd9h0q7vtjh9m8yul5ra8hg8ysatfqaf0fcwh9vu6sxpagne&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;npub1v83wugtw29dd9h0q7vtjh9m8yul5ra8hg8ysatfqaf0fcwh9vu6sxpagne&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1v83…agne&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;, &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1lrnvvs6z78s9yjqxxr38uyqkmn34lsaxznnqgd877j4z2qej3j5s09qnw5&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;corndalorian&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1lrn…qnw5&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;, &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1j6jh3a44q3jxmc2ph2gta3t9r9j65qwlqcze9zehsksnwfgyay7szpg7fw&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;DuneMessias&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1j6j…g7fw&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;, &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1xy04u0vum29hx3j6kzm9raaykakg6ru3kcgg88pywxqaxusyytsqvrpf8a&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Mickey&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1xy0…pf8a&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;, &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1de6l09erjl9r990q7n9ql0rwh8x8n059ht7a267n0q3qe28wua8q20q0sd&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;TheGrinder&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1de6…q0sd&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;, &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1gcxzte5zlkncx26j68ez60fzkvtkm9e0vrwdcvsjakxf9mu9qewqlfnj5z&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;VitorPamplona&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1gcx…nj5z&lt;/span&gt;)&lt;/a&gt;&lt;/span&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;, &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub138s5hey76qrnm2pmv7p8nnffhfddsm8sqzm285dyc0wy4f8a6qkqtzx624&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;quentin&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub138s…x624&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;, &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1qqqqqqqx2tj99mng5qgc07cgezv5jm95dj636x4qsq7svwkwmwnse3rfkq&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;negrunch&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1qqq…rfkq&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;, &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1qqpn4ym6tc5ul6d2kjxnzx3sv9trekp53678ut9fe3wrxa6yvhjsnql2ng&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Pinball Wizard&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1qqp…l2ng&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;, &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1zvyeff7d26lxmhzyh4jlmdjwvvkg5pmd9uxrwa82q45agmr0a0as6rvfj0&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;andreadcorreia&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1zvy…vfj0&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;, &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1catrya6c7rdnny0useday5ftxq9ycl5vt7c880zzmfwnpn58urgq6neuhz&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Catrya&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1cat…euhz&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;, &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1zuuajd7u3sx8xu92yav9jwxpr839cs0kc3q6t56vd5u9q033xmhsk6c2uc&#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;npub1zuu…c2uc&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;, &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1jgm0ntzjr03wuzj5788llhed7l6fst05um4ej2r86ueaa08etv6sgd669p&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;jgmontoya&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1jgm…669p&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;, &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1ven4zk8xxw873876gx8y9g9l9fazkye9qnwnglcptgvfwxmygscqsxddfh&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Danny&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1ven…ddfh&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;, &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1peps0fg2us0rzrsz40we8dw069yahjvzfuyznvnq68cyf9e9cw7s8agrxw&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;pepi&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1pep…grxw&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;, &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub16jdfqgazrkapk0yrqm9rdxlnys7ck39c7zmdzxtxqlmmpxg04r0sd733sv&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Luxas&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub16jd…33sv&lt;/span&gt;)&lt;/a&gt;&lt;/span&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;, &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub138he9w0tumwpun4rnrmywlez06259938kz3nmjymvs8px7e9d0js8lrdr2&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;dcadenas&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub138h…rdr2&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;, &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1mmfakwg4s36235wlav6qpe03cgr038gujn2hnsvwk2ne49gzqslqc6xvtp&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;untreu&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1mmf…xvtp&lt;/span&gt;)&lt;/a&gt;&lt;/span&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;, &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1aeh2zw4elewy5682lxc6xnlqzjnxksq303gwu2npfaxd49vmde6qcq4nwx&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;daniel&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1aeh…4nwx&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;, &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1g53mukxnjkcmr94fhryzkqutdz2ukq4ks0gvy5af25rgmwsl4ngq43drvk&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Sirius&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1g53…drvk&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;, &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1f27g79lrpey73wtqa2pprn7vv3yveyytws08lxqe7pn0yuj8ppyqyk9swu&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Anjhc&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1f27…9swu&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;, &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1qqqqqqqx2tj99mng5qgc07cgezv5jm95dj636x4qsq7svwkwmwnse3rfkq&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;negrunch&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1qqq…rfkq&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;, &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1ldsmj0vxfe8sawnkdwu92medcqnzar5c2qfw9xazs5yd65sx0kvqghzsk3&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;dangershony&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1lds…zsk3&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;.
    </content>
    <updated>2026-05-24T16:58:30Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqswxf3zyplgkfqax8rhjnaerjyvsrtamrjav8qpv80awdl75085uyqpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzqfngzhsvjggdlgeycm96x4emzjlwf8dyyzdfg4hefp89zpkdgz99e0haul</id>
    
      <title type="html">Vibe coding our way to feature parity with github 😄 ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqswxf3zyplgkfqax8rhjnaerjyvsrtamrjav8qpv80awdl75085uyqpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzqfngzhsvjggdlgeycm96x4emzjlwf8dyyzdfg4hefp89zpkdgz99e0haul" />
    <content type="html">
      Vibe coding our way to feature parity with github 😄 &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;br/&gt;&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Article&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nevent1qqs2rw78yg7yhd8wgnfkjaye3ryw26gqu25asdv55pcqujnp2xmf30cvh75dv&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;nevent1q…75dv&lt;/a&gt;&lt;/span&gt; &lt;/div&gt; Adds a read-only branches view to repository pages. The view is linked next to Commits, supports switching between Nostr state and specific git servers, shows branch counts per source, and compares each branch ahead/behind the default branch. &lt;/blockquote&gt;
    </content>
    <updated>2026-05-21T15:41:45Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsq79tg98jhtrwwluey3q228xmyq64w9ns7uuraunfxr2297cw0hmgpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzp2a2p8dtrlplllq5p87m9zcnsvkdgqchqnzd7cvc2f0606jxd0kj0fqn55</id>
    
      <title type="html">I was thinking just yesterday, when I got a notification for a ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsq79tg98jhtrwwluey3q228xmyq64w9ns7uuraunfxr2297cw0hmgpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzp2a2p8dtrlplllq5p87m9zcnsvkdgqchqnzd7cvc2f0606jxd0kj0fqn55" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsras2aw46uf2ecf4e7pu5cghjuyka704rj63kpt230gj8tahqwexc58sk4x&#39;&gt;nevent1q…sk4x&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;I was thinking just yesterday, when I got a notification for a comment in a 7 year old PR, “man, it would be nice to have a zapping pot for getting a PR merged”.
    </content>
    <updated>2026-05-13T21:36:15Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsras2aw46uf2ecf4e7pu5cghjuyka704rj63kpt230gj8tahqwexcpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzqfngzhsvjggdlgeycm96x4emzjlwf8dyyzdfg4hefp89zpkdgz996c6sda</id>
    
      <title type="html">Zaps coming to gitworkshop. I can&amp;#39;t wait to start zapping ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsras2aw46uf2ecf4e7pu5cghjuyka704rj63kpt230gj8tahqwexcpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzqfngzhsvjggdlgeycm96x4emzjlwf8dyyzdfg4hefp89zpkdgz996c6sda" />
    <content type="html">
      Zaps coming to gitworkshop. I can&amp;#39;t wait to start zapping issues and PRs :D&lt;br/&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;br/&gt;&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Article&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nevent1qgs2qzx779ted7af5rt04vzw3l2hpzfgtk0a2pw6t2plaz4d2734vngpzemhxue69uhhyetvv9ujuerfw36x7tnsw43z7qpqrz70z20d82nwsdr5r34fqhxyhkqprjgqyl5kdjl62nf9wdgv8a6q26mee6&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;nevent1q…mee6&lt;/a&gt;&lt;/span&gt; &lt;/div&gt; Thanks for this contribution. I made some fixes eg. sending to repository relays and added some few extras. &lt;br/&gt;Zap a repo:&lt;br/&gt; &lt;img src=&#34;https://haven.danconwaydev.com/000583373b717b867b96e6d1fd02223b5bc08aef6cb49aa74df5c954fd48c0ee.png&#34;&gt; &lt;br/&gt;Zap thread items such as comments:&lt;br/&gt; &lt;img src=&#34;https://haven.danconwaydev.com/42c9d0fff67f60840bc9a354d1cbc8668171fdd0632bade060dc8a977dd9f88b.png&#34;&gt; &lt;br/&gt;Expand to see comments:&lt;br/&gt; &lt;img src=&#34;https://haven.danconwaydev.com/49aade5f610ba76e40ef883016afd687d545f696522b3f66f99f582ed789a432.png&#34;&gt; &lt;br/&gt;Show notable zaps a seperate thread item if 500 sats&#43; or 19&#43; characters in the message:&lt;br/&gt; &lt;img src=&#34;https://haven.danconwaydev.com/bcd507ce7449f4d579ab583ee7430ffb5bbeab380006ffd9f35eb25729679e27.png&#34;&gt; &lt;br/&gt;Show zap total in Issue/PR list:&lt;br/&gt; &lt;img src=&#34;https://haven.danconwaydev.com/ac4924168dcb781e54abc2c6ebe6c6e8d2c910f33f02623a8fb912ab0dcf1cf1.png&#34;&gt; &lt;br/&gt;Add to notifications:&lt;br/&gt; &lt;img src=&#34;https://haven.danconwaydev.com/e8448baeef76956f365307aaa0bff411228af5c99e32aea0d6ea904260b20592.png&#34;&gt;  &lt;/blockquote&gt;
    </content>
    <updated>2026-05-13T16:48:08Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs8jfmm6gpg8lpql2dxjhfexh24ulydfexs0u0q4xddcylv20mhqaqpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzq85hw63rlwz9qjavc2dq93252lurd458tws7f2g96ssyqfck4dyy8f6guq</id>
    
      <title>Nostr event nevent1qqs8jfmm6gpg8lpql2dxjhfexh24ulydfexs0u0q4xddcylv20mhqaqpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzq85hw63rlwz9qjavc2dq93252lurd458tws7f2g96ssyqfck4dyy8f6guq</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs8jfmm6gpg8lpql2dxjhfexh24ulydfexs0u0q4xddcylv20mhqaqpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzq85hw63rlwz9qjavc2dq93252lurd458tws7f2g96ssyqfck4dyy8f6guq" />
    <content type="html">
      Test
    </content>
    <updated>2026-05-13T13:17:36Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsp8d476ve7n0v9eqs7acre8y4qxju8550c4vnfj8jsmd90vztun4gpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzq85hw63rlwz9qjavc2dq93252lurd458tws7f2g96ssyqfck4dyylxtjff</id>
    
      <title>Nostr event nevent1qqsp8d476ve7n0v9eqs7acre8y4qxju8550c4vnfj8jsmd90vztun4gpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzq85hw63rlwz9qjavc2dq93252lurd458tws7f2g96ssyqfck4dyylxtjff</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsp8d476ve7n0v9eqs7acre8y4qxju8550c4vnfj8jsmd90vztun4gpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzq85hw63rlwz9qjavc2dq93252lurd458tws7f2g96ssyqfck4dyylxtjff" />
    <content type="html">
      test
    </content>
    <updated>2026-05-07T19:23:10Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsvt4ru20funmwe64cu64rv25fmzuq9fz23vl988nsxghrp94w7xncpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzq85hw63rlwz9qjavc2dq93252lurd458tws7f2g96ssyqfck4dyyz75hte</id>
    
      <title>Nostr event nevent1qqsvt4ru20funmwe64cu64rv25fmzuq9fz23vl988nsxghrp94w7xncpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzq85hw63rlwz9qjavc2dq93252lurd458tws7f2g96ssyqfck4dyyz75hte</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsvt4ru20funmwe64cu64rv25fmzuq9fz23vl988nsxghrp94w7xncpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzq85hw63rlwz9qjavc2dq93252lurd458tws7f2g96ssyqfck4dyyz75hte" />
    <content type="html">
      test
    </content>
    <updated>2026-05-07T19:01:09Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqswsg7rug8vg0wf3670z2qgcyqrn5wtpqang4h0qp2kj0ydz2fqzmqpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzp720sey24nkf3q96velmgghcsmthlfnue0jnsezmrcsat4vqug2wc7y787</id>
    
      <title type="html">Gridiron Price: 100 SAT #zapsnag ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqswsg7rug8vg0wf3670z2qgcyqrn5wtpqang4h0qp2kj0ydz2fqzmqpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzp720sey24nkf3q96velmgghcsmthlfnue0jnsezmrcsat4vqug2wc7y787" />
    <content type="html">
      Gridiron&lt;br/&gt;&lt;br/&gt;Price: 100 SAT&lt;br/&gt;&lt;br/&gt;#zapsnag&lt;br/&gt; &lt;img src=&#34;https://cdn.nostrcheck.me/043babfd106165ea3f837190e8024297082099c23c5024b53e195faeb8f6086a.jpeg&#34;&gt; 
    </content>
    <updated>2026-05-05T17:10:56Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsyh89hvuy7lhld77asu76lu9mq66fc3l8gnt5hzq3atdczc43kqfcpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzpgqgmmc409hm4xsdd74sf68a2uyf9pwel4g9mfdg8l5244t6x4jd4h48qf</id>
    
      <title type="html">Its probably because the client you are using doesnt support ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsyh89hvuy7lhld77asu76lu9mq66fc3l8gnt5hzq3atdczc43kqfcpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzpgqgmmc409hm4xsdd74sf68a2uyf9pwel4g9mfdg8l5244t6x4jd4h48qf" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqspuw882q7upddjzs33pkl4m3dx4flq0mqnnqgy9w7gdh67mtnxvaspzemhxue69uhhyetvv9ujuerfw36x7tnsw43z76u7uzl&#39;&gt;nevent1q…7uzl&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Its probably because the client you are using doesnt support showing the git PR kind.&lt;br/&gt;&lt;a href=&#34;https://gitworkshop.dev/nevent1qy28wumn8ghj7un9d3shjtnwva5hgtnyv4mqqgrwmpmlfdc8vzjvemlk4z055lccugf3w4tyer4sl4yujt2tva057v49nc6t&#34;&gt;https://gitworkshop.dev/nevent1qy28wumn8ghj7un9d3shjtnwva5hgtnyv4mqqgrwmpmlfdc8vzjvemlk4z055lccugf3w4tyer4sl4yujt2tva057v49nc6t&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;The nostr link has relay hints:&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;/nevent1qy28wumn8ghj7un9d3shjtnwva5hgtnyv4mqqgrwmpmlfdc8vzjvemlk4z055lccugf3w4tyer4sl4yujt2tva057v49nc6t&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;nevent1q…nc6t&lt;/a&gt;&lt;/span&gt; &lt;/div&gt; Introduces a trusted third party — the service — that faithfully signs&lt;br/&gt;repo state announcements on the user&#39;s behalf, enabling Git-over-SSH&lt;br/&gt;without a Nostr signing plugin, trading trustlessness for convenience&lt;br/&gt;and simpler onboarding. Users retain GRASP backup, redundancy, and&lt;br/&gt;collaboration benefits, and can remove the proxy pubkey from maintainers&lt;br/&gt;to return to a fully self-signed setup at any time. &lt;/blockquote&gt;
    </content>
    <updated>2026-05-05T08:21:50Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqstxqcs9a0yjuz0vcl645lpv29nnctm8yahakxg42y0ak24e93zy8gpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzpgqgmmc409hm4xsdd74sf68a2uyf9pwel4g9mfdg8l5244t6x4jds4zrfr</id>
    
      <title type="html">I decided to interpret this as &amp;#34;until you fix the client that ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqstxqcs9a0yjuz0vcl645lpv29nnctm8yahakxg42y0ak24e93zy8gpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzpgqgmmc409hm4xsdd74sf68a2uyf9pwel4g9mfdg8l5244t6x4jds4zrfr" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs0a2eftnynq6lh3e0xs4qd2r2lg27cr76m4k35z9emy8qps2lukxqpzemhxue69uhhyetvv9ujuerfw36x7tnsw43z7u4ynzj&#39;&gt;nevent1q…ynzj&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;I decided to interpret this as &amp;#34;until you fix the client that produced the note without the reference&amp;#34; for maxium PoW. So here is the GRASP ssh proxy idea:&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;/nevent1qvzqqqqx2gpzpgqgmmc409hm4xsdd74sf68a2uyf9pwel4g9mfdg8l5244t6x4jdqy88wumn8ghj7mn0wvhxcmmv9uq3camnwvaz7tmwva5hgtnyv9hxxmmwwashjer9wchxxmmd9uqzqmkcwl6twpmq5nxwla4gna987x8zzvt42exgav8af8yj6jm8ta8nhas6xr&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;nevent1q…s6xr&lt;/a&gt;&lt;/span&gt;&lt;br/&gt; &lt;/div&gt; Introduces a trusted third party — the service — that faithfully signs&lt;br/&gt;repo state announcements on the user&#39;s behalf, enabling Git-over-SSH&lt;br/&gt;without a Nostr signing plugin, trading trustlessness for convenience&lt;br/&gt;and simpler onboarding. Users retain GRASP backup, redundancy, and&lt;br/&gt;collaboration benefits, and can remove the proxy pubkey from maintainers&lt;br/&gt;to return to a fully self-signed setup at any time. &lt;/blockquote&gt;&lt;br/&gt;and here is the client fix PR:&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;/nevent1qy28wumn8ghj7un9d3shjtnwva5hgtnyv4mqqgzu8399x2zfwdz6rff7psc0qzvfamesu3jklxh5qwukcvcemdk8p5w7mm3d&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;nevent1q…mm3d&lt;/a&gt;&lt;/span&gt; &lt;/div&gt; Bare NIP-19 bech32 identifiers typed or pasted into the compose box were&lt;br/&gt;previously published as-is in event content, without the nostr: URI prefix.&lt;br/&gt;NoteContent&#39;s lenient renderer masked this locally, but any spec-compliant&lt;br/&gt;client would fail to recognise the references, and p/q tag extraction was&lt;br/&gt;correspondingly incomplete.&lt;br/&gt;&lt;br/&gt;Rather than re-implement the identifier-scanning regex at each call site,&lt;br/&gt;this introduces two small shared helpers and routes both the live preview&lt;br/&gt;and the publish handler through them, so what the user sees in preview is&lt;br/&gt;exactly what gets signed.&lt;br/&gt;&lt;br/&gt;src/lib/nostrIdentifier.ts&lt;br/&gt;  - findUrlRanges(text): scan once for http(s)://… spans, so every scanner&lt;br/&gt;    in this file shares the same definition of &#39;inside a URL&#39;.&lt;br/&gt;  - findNip19InText(text): scans text for NIP-19 identifiers, returns only&lt;br/&gt;    matches that successfully nip19.decode(). Uses findUrlRanges to skip&lt;br/&gt;    identifiers anywhere inside a URL span — including already-prefixed&lt;br/&gt;    ones, so &lt;a href=&#34;https://example.com/nostr:nevent1&#34;&gt;https://example.com/nostr:nevent1&lt;/a&gt;... no longer emits a stray&lt;br/&gt;    q tag. nsec1 is never matched.&lt;br/&gt;  - normalizeNip19ToNostrUri(text): rewrites bare identifiers to their&lt;br/&gt;    nostr: URI form (NIP-21) and returns the scan results alongside the&lt;br/&gt;    rewritten text, so callers don&#39;t pay for two decode passes.&lt;br/&gt;&lt;br/&gt;src/lib/composedNoteTags.ts&lt;br/&gt;  - buildComposedNoteTags({ content, quotedEvent, ... }): single source of&lt;br/&gt;    truth for every content-derived tag on a composed note. Emits t, p&lt;br/&gt;    (NIP-27), q (NIP-18), emoji (NIP-30), imeta (NIP-92), and&lt;br/&gt;    content-warning (NIP-36) tags, and returns the NIP-21-normalised&lt;br/&gt;    content alongside. The explicit quoted-event widget is now an input to&lt;br/&gt;    the builder — it appends the nostr: URI to the (normalised) content&lt;br/&gt;    and emits the q tag internally, so callers can&#39;t forget the dedupe&lt;br/&gt;    step or drift preview and publish. Reply-specific NIP-10 tags remain&lt;br/&gt;    in handleSubmit because they depend on replyTo rather than on content.&lt;br/&gt;&lt;br/&gt;src/components/ComposeBox.tsx&lt;br/&gt;  - mockEvent (preview) and handleSubmit (publish) make the same&lt;br/&gt;    buildComposedNoteTags call, including contentWarning and quotedEvent.&lt;br/&gt;    Removed the quote-widget branch from handleSubmit: the builder now&lt;br/&gt;    owns it.&lt;br/&gt;&lt;br/&gt;Covers NIP-21 (nostr: URI scheme) for npub1/nprofile1/note1/nevent1/naddr1/&lt;br/&gt;nrelay1, NIP-27 p-tag extraction for both npub1 and nprofile1 mentions,&lt;br/&gt;and NIP-18 q-tag emission for every inline nostr:note1/nevent1/naddr1&lt;br/&gt;reference with duplicates against the quoted-event widget suppressed. &lt;/blockquote&gt;
    </content>
    <updated>2026-05-05T08:17:06Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsvafz464mw03ga4h08mke8zvavchl4t4plvzgsvv6hhjhqj3fdyyspfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzpzafy4s95fhr47eex588d440fcm7jxc706p5u0afz825d78pelga7ku0jj</id>
    
      <title type="html">&amp;#34;US Central Command announces the participation of 15,000 ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsvafz464mw03ga4h08mke8zvavchl4t4plvzgsvv6hhjhqj3fdyyspfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzpzafy4s95fhr47eex588d440fcm7jxc706p5u0afz825d78pelga7ku0jj" />
    <content type="html">
      &amp;#34;US Central Command announces the participation of 15,000 troops, 100 aircraft, and guided-missile destroyers in Operation &amp;#34;Freedom,&amp;#34; announced by Donald Trump to free ships from the Strait of Hormuz.&amp;#34;&lt;br/&gt;&lt;br/&gt;Lel, Project Epic Fury didn&amp;#39;t ahbe congressional approval, so he ended it 1 day before, then started a new one, also without approval 🤡&lt;br/&gt;&lt;br/&gt;Even AmeriKKKan laws are working exactly as designed - to NOT work 😁😆&lt;br/&gt;&lt;br/&gt;Anyway, looking forward to Iran 🇮🇷 wiping the floor with them 🍿 
    </content>
    <updated>2026-05-04T08:40:14Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsvmkwt53v8hxz05z65wg55cu3etljec5z4e95jufw3j3asw9pw9lqpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzqs60j7vnvfl3uc03fm40vr923n7uasg2tyk2l7p9pjp9y5k4frq437cc7n</id>
    
      <title type="html">#nevent1q…uxyz It&amp;#39;s a kind:1618 pull request event, it ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsvmkwt53v8hxz05z65wg55cu3etljec5z4e95jufw3j3asw9pw9lqpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzqs60j7vnvfl3uc03fm40vr923n7uasg2tyk2l7p9pjp9y5k4frq437cc7n" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs0a2eftnynq6lh3e0xs4qd2r2lg27cr76m4k35z9emy8qps2lukxqprfmhxue69uhhq7tjv9kkjepwve5kzar2v9nzucm0d5hsekjtdt&#39;&gt;nevent1q…jtdt&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&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;/nevent1qvzqqqqx2gpzpgqgmmc409hm4xsdd74sf68a2uyf9pwel4g9mfdg8l5244t6x4jdqy88wumn8ghj7mn0wvhxcmmv9uq32amnwvaz7tmjv4kxz7fwdenkjapwv3jhvtcqyphdsal5kurkpfxvalm238620uvwyych24jv36c06jwf949kwh60xgxuxyz&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;nevent1q…uxyz&lt;/a&gt;&lt;/span&gt;&lt;br/&gt; &lt;/div&gt; Introduces a trusted third party — the service — that faithfully signs&lt;br/&gt;repo state announcements on the user&#39;s behalf, enabling Git-over-SSH&lt;br/&gt;without a Nostr signing plugin, trading trustlessness for convenience&lt;br/&gt;and simpler onboarding. Users retain GRASP backup, redundancy, and&lt;br/&gt;collaboration benefits, and can remove the proxy pubkey from maintainers&lt;br/&gt;to return to a fully self-signed setup at any time. &lt;/blockquote&gt;It&amp;#39;s a kind:1618 pull request event, it doesn&amp;#39;t work on most clients.&lt;br/&gt;&lt;a href=&#34;https://gitworkshop.dev/npub15qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exs5cyejr/nos.lol/grasp/prs/nevent1qy88wumn8ghj7mn0wvhxcmmv9uq32amnwvaz7tmjv4kxz7fwdenkjapwv3jhvtcqyphdsal5kurkpfxvalm238620uvwyych24jv36c06jwf949kwh60xevh5ul&#34;&gt;https://gitworkshop.dev/npub15qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exs5cyejr/nos.lol/grasp/prs/nevent1qy88wumn8ghj7mn0wvhxcmmv9uq32amnwvaz7tmjv4kxz7fwdenkjapwv3jhvtcqyphdsal5kurkpfxvalm238620uvwyych24jv36c06jwf949kwh60xevh5ul&lt;/a&gt;
    </content>
    <updated>2026-05-02T07:45:38Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsz2xqef22n5at2e6xfys9x952v5s94x47ps6a4qryveks22trpnxcpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzph4t08d058ptuj62d5av5y6hkm92pd6yhar26556ttjxg2y908ngk0qng4</id>
    
      <title>Nostr event nevent1qqsz2xqef22n5at2e6xfys9x952v5s94x47ps6a4qryveks22trpnxcpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzph4t08d058ptuj62d5av5y6hkm92pd6yhar26556ttjxg2y908ngk0qng4</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsz2xqef22n5at2e6xfys9x952v5s94x47ps6a4qryveks22trpnxcpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzph4t08d058ptuj62d5av5y6hkm92pd6yhar26556ttjxg2y908ngk0qng4" />
    <content type="html">
       &lt;img src=&#34;https://haven.downisontheup.ca/dcd0c1ebcd28cb922b09498f5ef0204e59a653f5913f2db0cea9546a0535f9d8.jpg&#34;&gt; 
    </content>
    <updated>2026-04-28T18:28:27Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsg4ag2hks2d2lexn425z369n7vlglwas5xky73wd47a2nml5tp3scpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzqa3mq5aux7sfynqklr66vpuzklq66z54hx72ceuhrv64n98gmtulpyejm0</id>
    
      <title type="html">#naddr1qq…4uzu</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsg4ag2hks2d2lexn425z369n7vlglwas5xky73wd47a2nml5tp3scpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzqa3mq5aux7sfynqklr66vpuzklq66z54hx72ceuhrv64n98gmtulpyejm0" />
    <content type="html">
      In reply to &lt;a href=&#39;/naddr1qqyy66twd9px7mr5qgstzl7vmurm5gu87qutx3pxwgxddrg39huj809zhmv03scfkus3z4grqsqqpphk750eyx&#39;&gt;naddr1qq…0eyx&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&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;/naddr1qq2nvkrdg98x2s6gdf4nwv3k94u8v6z4tye95qgwwaehxw309ahx7uewd3hkctczypmrkpfmcdaqjfxpd7845crc9d7p459ftwdu43newxe4tx2w3khe7qcyqqq823cx64uzu&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;naddr1qq…4uzu&lt;/a&gt;&lt;/span&gt; &lt;/div&gt; 
&lt;h2 id=&#34;what-s-changed-2&#34;&gt;What&amp;#39;s changed&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Modified &lt;a href=&#34;https://minibolt.minibolt.info/system/system/privacy#tor-installation&#34;&gt;Tor&lt;/a&gt; and &lt;a href=&#34;https://minibolt.minibolt.info/system/system/privacy#i2p-installation&#34;&gt;I2P&lt;/a&gt; installation processes to avoid scripts and align with MiniBolt principles.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Bumped &lt;a href=&#34;https://minibolt.minibolt.info/bitcoin/bitcoin/bitcoin-client#installation&#34;&gt;Bitcoin Core&lt;/a&gt; to the &lt;a href=&#34;https://github.com/bitcoin/bitcoin/releases/tag/v31.0&#34;&gt;latest v31.0&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Added a new &lt;a href=&#34;https://minibolt.minibolt.info/bitcoin/bitcoin/bitcoin-client#activate-private-transaction-broadcasting&#34;&gt;Activate private transaction broadcasting&lt;/a&gt; section to the Bitcoin Core &lt;a href=&#34;https://minibolt.minibolt.info/bitcoin/bitcoin/bitcoin-client#extras-optional&#34;&gt;Extra section&lt;/a&gt;, covering the new &lt;code&gt;privatebroadcast&lt;/code&gt; option introduced with &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/29415&#34;&gt;this PR&lt;/a&gt; in &lt;a href=&#34;https://github.com/bitcoin/bitcoin/releases/tag/v31.0&#34;&gt;v31.0&lt;/a&gt;. See this post with a detailed demo testing: &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Article&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nevent1qvzqqqqqqypzpvtlen0s0w3rslcr3v6yyeeqe45dzykljgau52ld37xrpxmjzy24qyghwumn8ghj7cn0wd68ytnndphhqtcpr9mhxue69uhhyetvv9ujumn0wdmksetjv5hxxmmd9uqzpsjtyfejavg7rp0u92lmmnpj39mx2mf7dn5aqdtk6u53eapeda28vxsvyh&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;nevent1q…svyh&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Added a new &lt;code&gt;lncli&lt;/code&gt; command (&lt;a href=&#34;https://minibolt.minibolt.info/lightning/lightning/lightning-client#greater-than-open-multiple-channels-in-a-single-transaction&#34;&gt;Open multiple channels in a single transaction&lt;/a&gt;) to the &lt;a href=&#34;https://minibolt.minibolt.info/lightning/lightning/lightning-client#some-useful-lncli-commands&#34;&gt;Some useful lncli commands&lt;/a&gt; section.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Updated &lt;a href=&#34;https://minibolt.minibolt.info/bonus-guides/bitcoin/btcpay-server#upgrade-btcpay-server&#34;&gt;BTCPay Server&lt;/a&gt; to the latest v2.3.9, along with &lt;a href=&#34;https://minibolt.minibolt.info/bonus-guides/bitcoin/btcpay-server#upgrade-nbxplorer&#34;&gt;NBXplorer&lt;/a&gt; to v2.6.7 and its needed dependency &lt;a href=&#34;https://minibolt.minibolt.info/bonus-guides/bitcoin/btcpay-server#upgrade-.net-core-sdk&#34;&gt;.NET Core SDK&lt;/a&gt; v10.0 (old v8.0, need to be updated).&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;Note: If you encounter an error during the upgrade process, read the appropriate &amp;#34;Troubleshooting notes&amp;#34; for instructions specific to your case.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;Updated &lt;a href=&#34;https://minibolt.minibolt.info/system/system/security#installation&#34;&gt;Nginx installation process&lt;/a&gt; to use packages from the official Nginx repositories instead of the default Ubuntu repositories.
This ensures access to the latest available Nginx version, which is required for certain &lt;a href=&#34;https://minibolt.minibolt.info/bonus-guides/bitcoin/mempool#paste-the-following-complete-configuration.-save-and-exit.-expandable-push-on&#34;&gt;Mempool configuration parameters&lt;/a&gt;. &lt;strong&gt;Follow the next steps&lt;/strong&gt; to switch to the official Nginx repository and update it:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Migrating to Official Nginx Upstream Packages&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;To replace the Ubuntu Nginx package (used in the previous version of MiniBolt) with the official upstream build, follow the steps below:&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;With user &lt;code&gt;admin&lt;/code&gt;, update and upgrade the OS. Press &amp;#34;y&amp;#34; and enter, or directly enter when the prompt asks you:&lt;/li&gt;
&lt;/ul&gt;

&lt;pre&gt;&lt;code&gt;sudo apt update &amp;amp;&amp;amp; sudo apt full-upgrade
&lt;/code&gt;&lt;/pre&gt;

&lt;ul&gt;
&lt;li&gt;Import an official Nginx signing key so apt could verify the package&amp;#39;s authenticity. Fetch the key:&lt;/li&gt;
&lt;/ul&gt;

&lt;pre&gt;&lt;code&gt;curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
    | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg &amp;gt;/dev/null
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Expected output:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 11809  100 11809    0     0  45819      0 --:--:-- --:--:-- --:--:-- 45949
&lt;/code&gt;&lt;/pre&gt;

&lt;ul&gt;
&lt;li&gt;Verify that the downloaded file contains the proper key:&lt;/li&gt;
&lt;/ul&gt;

&lt;pre&gt;&lt;code&gt;gpg --dry-run --quiet --no-keyring --import --import-options import-show /usr/share/keyrings/nginx-archive-keyring.gpg
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Expected output:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;pub   rsa4096 2024-05-29 [SC]
      8540A6F18833A80E9C1653A42FD21310B49F6B46
uid                      nginx signing key &amp;lt;signing-key-2@nginx.com&amp;gt;

pub   rsa2048 2011-08-19 [SC] [expires: 2027-05-24]
      573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62
uid                      nginx signing key &amp;lt;signing-key@nginx.com&amp;gt;

pub   rsa4096 2024-05-29 [SC]
      9E9BE90EACBCDE69FE9B204CBCDCD8A38D88A2B3
uid                      nginx signing key &amp;lt;signing-key-3@nginx.com&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;ul&gt;
&lt;li&gt;Set up the apt repository for stable Nginx packages:&lt;/li&gt;
&lt;/ul&gt;

&lt;pre&gt;&lt;code&gt;echo &amp;#34;deb [arch=amd64 signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
https://nginx.org/packages/ubuntu `lsb_release -cs` nginx&amp;#34; \
    | sudo tee /etc/apt/sources.list.d/nginx.list
&lt;/code&gt;&lt;/pre&gt;

&lt;ul&gt;
&lt;li&gt;Set up repository pinning to prefer the Nginx packages over distribution-provided (Ubuntu) ones:&lt;/li&gt;
&lt;/ul&gt;

&lt;pre&gt;&lt;code&gt;echo -e &amp;#34;Package: *\nPin: origin nginx.org\nPin: release o=nginx\nPin-Priority: 900\n&amp;#34; \
    | sudo tee /etc/apt/preferences.d/99nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;ul&gt;
&lt;li&gt;Update Nginx to the latest official Nginx Upstream Packages version. Press &amp;#34;y&amp;#34; and enter, or directly enter when the prompt asks you:&lt;/li&gt;
&lt;/ul&gt;

&lt;pre&gt;&lt;code&gt;sudo apt update &amp;amp;&amp;amp; sudo apt install nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;👉 When the prompt shows you:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;[...]
Configuration file &amp;#39;/etc/nginx/nginx.conf&amp;#39;
 ==&amp;gt; Modified (by you or by a script) since installation.
 ==&amp;gt; Package distributor has shipped an updated version.
   What would you like to do about it ?  Your options are:
    Y or I  : install the package maintainer&amp;#39;s version
    N or O  : keep your currently-installed version
      D     : show the differences between the versions
      Z     : start a shell to examine the situation
 The default action is to keep your current version.
*** nginx.conf (Y/I/N/O/D/Z) [default=N] ?
&lt;/code&gt;&lt;/pre&gt;

&lt;ul&gt;
&lt;li&gt;Type &lt;code&gt;N&lt;/code&gt; &#43; press &lt;code&gt;Enter&lt;/code&gt;, or directly &lt;code&gt;Enter&lt;/code&gt; [default=N].&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;Note: If you type &lt;code&gt;Y&lt;/code&gt; &#43; press &lt;code&gt;Enter&lt;/code&gt;, it overwrites the &lt;code&gt;nginx.conf&lt;/code&gt; file with the package maintainer&amp;#39;s version, and you will need to reconfigure it again following the &lt;a href=&#34;https://minibolt.minibolt.info/system/system/security#configuration-1&#34;&gt;Nginx Configuration section&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;Check the correct installation:&lt;/li&gt;
&lt;/ul&gt;

&lt;pre&gt;&lt;code&gt;nginx -v
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;strong&gt;Example&lt;/strong&gt; of expected output:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;nginx version: nginx/1.30.0
&lt;/code&gt;&lt;/pre&gt;

&lt;hr&gt;

&lt;p&gt;That&amp;#39;s it!✅&lt;/p&gt;

&lt;p&gt;💙Enjoy it, MiniBolter!💙&lt;/p&gt;
 &lt;/blockquote&gt;
    </content>
    <updated>2026-04-27T07:31:58Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsgx2s2zdde25zs390v7sf2z4y5vc08h3em6k0s2z0whhrad7d983spfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzp7m0rjnvz4yfxxpj6qax8rv2kleyk2dh5afrtjw5d8h3fxsa0su0t9s9ls</id>
    
      <title type="html">Bitcoin Core is compromised - this was an excellent attempt at ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsgx2s2zdde25zs390v7sf2z4y5vc08h3em6k0s2z0whhrad7d983spfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzp7m0rjnvz4yfxxpj6qax8rv2kleyk2dh5afrtjw5d8h3fxsa0su0t9s9ls" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsvyjezwvhtz8sctlp2h77ucv5fwejk60nva8gr2akh9yw0gwt023cg45k57&#39;&gt;nevent1q…5k57&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Bitcoin Core is compromised - this was an excellent attempt at trying to get us to turn a blind eye though.
    </content>
    <updated>2026-04-26T10:36:43Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsvyjezwvhtz8sctlp2h77ucv5fwejk60nva8gr2akh9yw0gwt023cpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzpvtlen0s0w3rslcr3v6yyeeqe45dzykljgau52ld37xrpxmjzy24kky5us</id>
    
      <title type="html">🧪 Tested the `privatebroadcast` option introduced in Bitcoin ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsvyjezwvhtz8sctlp2h77ucv5fwejk60nva8gr2akh9yw0gwt023cpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzpvtlen0s0w3rslcr3v6yyeeqe45dzykljgau52ld37xrpxmjzy24kky5us" />
    <content type="html">
      🧪 Tested the `privatebroadcast` option introduced in Bitcoin Core v31.0 🆕👇&lt;br/&gt;&lt;br/&gt;-&amp;gt; PR: &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/29415&#34;&gt;https://github.com/bitcoin/bitcoin/pull/29415&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;-&amp;gt; In the release notes: &lt;a href=&#34;https://github.com/bitcoin/bitcoin/blob/master/doc/release-notes/release-notes-31.0.md#p2p-and-network-changes&#34;&gt;https://github.com/bitcoin/bitcoin/blob/master/doc/release-notes/release-notes-31.0.md#p2p-and-network-changes&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;---&lt;br/&gt;1️⃣ In this 1st test, here we can see the initial behavior after broadcasting a transaction on testnet4 using Sparrow → Fulcrum → Bitcoin Core flow.&lt;br/&gt;&lt;br/&gt;👀 In the top-right screen, we can see the `bitcoin-cli getprivatebroadcastinfo` command running, which provides introspection and control over private broadcast status in the peer manager:&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://blossom.minibolt.info/4acc29393dd8c5cbcd9e57b4f5fc157936d3c59a35417437587531472393e67b.mp4&#34;&gt;&lt;/video&gt;&lt;br/&gt;&lt;br/&gt;---&lt;br/&gt;2️⃣ In this 2nd test, we broadcast the transaction just like the 1st, but immediately run `bitcoin-cli abortprivatebroadcast &amp;lt;txid&amp;gt;` in the bottom-left screen to stop it from propagating — acting as a &amp;#34;cancel&amp;#34; button by removing it from the private broadcast queue.&lt;br/&gt;&lt;br/&gt;👀 In the top-right screen, `bitcoin-cli getprivatebroadcastinfo` shows the effect instantly, with the transaction disappearing from the peer manager view:&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://blossom.minibolt.info/65ca1e9af8ee51ee74a31e45d493d0ca73bc6599e5b05f469dfaaca3668aa7f5.mp4&#34;&gt;&lt;/video&gt;&lt;br/&gt;&lt;br/&gt;🎨 Finally, an AI-generated diagram explaining how it works under the hood:&lt;br/&gt;&lt;br/&gt; &lt;img src=&#34;https://blossom.minibolt.info/2f8f092ea6a5b37f5314fc5ea3311a08dfb141951b5bd80501353cbdc92c15d0.webp&#34;&gt; &lt;br/&gt;&lt;br/&gt;Note for &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nprofile1qqs8vwc980ph5zfyc9hc7knq0q4hcxks49dehjkx09cmx4vef6x6l8c9lz6rd&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;MiniBolt&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;nprofile…z6rd&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; ers: this option is not yet enabled &amp;#34;by default&amp;#34; in the &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nprofile1qqs8vwc980ph5zfyc9hc7knq0q4hcxks49dehjkx09cmx4vef6x6l8c9lz6rd&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;MiniBolt&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;nprofile…z6rd&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; following the Bitcoin Core initial configuration (`bitcoin.conf`), as it should be used with caution. The broadcast process using this option is **significantly slower**, to the point that Sparrow may display a timeout error, since transactions are not immediately visible in the mempool due to delayed propagation while private connections are established and peers are reached. By observing how this transaction relay delay affects our node, especially LND, we can evaluate whether this should become &amp;#34;the default&amp;#34; Bitcoin Core setting in the future.&lt;br/&gt;&lt;br/&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;/nprofile1qqstu7jjjx6n969erredexq539y2x0f7pks80zxhg9hh8dx8298s3es4t502m&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;craigraw&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;nprofile…502m&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; ...perhaps it would be a good idea to increase the waiting time or add a condition to prevent Sparrow from throwing that timeout error when `privatebroadcast=1` is enabled in Bitcoin Core, idk. Issue opened: &lt;a href=&#34;https://github.com/sparrowwallet/sparrow/issues/1989&#34;&gt;https://github.com/sparrowwallet/sparrow/issues/1989&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;---&lt;br/&gt;&lt;br/&gt;Good news for the #Bitcoin ecosystem! #Privacy tools are always welcome!🥷💪
    </content>
    <updated>2026-04-25T18:39:41Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsx2drff3ws4k5a3mm9gcv4yzhvypq0nsxdsreqpdgn0nn563r6v6qpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzqs5z3aym3wq2264l237leagh8rxt97mkmnywwqac7jc3j3ezsp522dtc0v</id>
    
      <title type="html">90&amp;#39;s you say? ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsx2drff3ws4k5a3mm9gcv4yzhvypq0nsxdsreqpdgn0nn563r6v6qpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzqs5z3aym3wq2264l237leagh8rxt97mkmnywwqac7jc3j3ezsp522dtc0v" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqspf6chjyam4sn6nzv5j3yh25mle755n7eh4452lwk6pyqz6dhdk4qprpmhxue69uhkv6tvw3jhytnwdaehgu3wwa5kuef0sqmltg&#39;&gt;nevent1q…mltg&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;90&amp;#39;s you say?&lt;br/&gt;&lt;br/&gt; &lt;img src=&#34;https://image.nostr.build/d55ef2cc856c4507da42509e514e28e24498081503e8cc124a4940e644c4bb69.jpg&#34;&gt; 
    </content>
    <updated>2026-04-21T07:34:05Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsrwpue9zj8w678yp0t3vjg0833vnqc57jgxmfcap8schh3xxn883gpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzphtxf40yq9jr82xdd8cqtts5szqyx5tcndvaukhsvfmduetr85cefev5dc</id>
    
      <title>Nostr event nevent1qqsrwpue9zj8w678yp0t3vjg0833vnqc57jgxmfcap8schh3xxn883gpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzphtxf40yq9jr82xdd8cqtts5szqyx5tcndvaukhsvfmduetr85cefev5dc</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsrwpue9zj8w678yp0t3vjg0833vnqc57jgxmfcap8schh3xxn883gpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzphtxf40yq9jr82xdd8cqtts5szqyx5tcndvaukhsvfmduetr85cefev5dc" />
    <content type="html">
      test
    </content>
    <updated>2026-04-11T08:04:13Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsfhcwqup5lz8nsv00mctlghe94p9l97ljks85xnej0ahza4wgg8qcpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzphtxf40yq9jr82xdd8cqtts5szqyx5tcndvaukhsvfmduetr85cel9kshj</id>
    
      <title type="html">Nein, aber alle Bürger müssen im Verteidigungsfall kämpfen o. ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsfhcwqup5lz8nsv00mctlghe94p9l97ljks85xnej0ahza4wgg8qcpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzphtxf40yq9jr82xdd8cqtts5szqyx5tcndvaukhsvfmduetr85cel9kshj" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqspwx9maln9g6ty394h5zlv6029l8k2v90w52t00nqqnk4xry85adgprdmhxue69uhhg6r9vehhyetnwshxummnw3erztnrdakj7ggczsf&#39;&gt;nevent1q…czsf&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Nein, aber alle Bürger müssen im Verteidigungsfall kämpfen o. Ä. wie Feuerwehr, Technisches Hilfswerk, Küstenwache, etc. (Außer sie haben eine religiöse Ausnahme oder sowas, und dann müssen sie einen anderen Dienst leisten.)&lt;br/&gt;&lt;br/&gt;Wehrdienst war immer Vorbereitung, nicht Voraussetzung. Aber das Pausieren davon hat alle es vergessen lassen. Jetzt hat man halt gesagt:&lt;br/&gt;&lt;br/&gt; &lt;img src=&#34;https://media.tenor.com/jPNqiiipxwgAAAAC/apple.gif&#34;&gt; 
    </content>
    <updated>2026-04-04T18:12:51Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsqqqppnza3au0x0jckqgnvsc684sd65w892xtpsvp2w8vdqqc0umspfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzpde8f55w86vrhaeqmd955y4rraw8aunzxgxstsj7eyzgntyev2xtrezsjf</id>
    
      <title type="html">Correct. If you choose to install an app for the first time, you ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsqqqppnza3au0x0jckqgnvsc684sd65w892xtpsvp2w8vdqqc0umspfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzpde8f55w86vrhaeqmd955y4rraw8aunzxgxstsj7eyzgntyev2xtrezsjf" />
    <content type="html">
      Correct. If you choose to install an app for the first time, you will get an &amp;#34;are you sure?&amp;#34; type of message that shows whether anyone in your web of trust follows the publisher of the app, but that doesn&amp;#39;t show up at all for updating.&lt;br/&gt;&lt;br/&gt;It would be nice if &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; showed WoT on the app information page prior to tapping &amp;#34;install.&amp;#34;
    </content>
    <updated>2026-04-01T16:21:21Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsp3uz6y7ckmcwq486n4j0ltpdh6dtqh8hnff025f0eez7edl8msxspfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzpcfttf7l7zz043whnqqjm49ms9jrrzpvqklpv8vmz7wqz9q2l8uykh00en</id>
    
      <title type="html">A full account export feature would be essential should a factory ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsp3uz6y7ckmcwq486n4j0ltpdh6dtqh8hnff025f0eez7edl8msxspfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzpcfttf7l7zz043whnqqjm49ms9jrrzpvqklpv8vmz7wqz9q2l8uykh00en" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsqqqrgzfnrzamwwctl5pxmx5t8we726nv6ku7e34ep2z7w4g7wpfgppemhxue69uhkummn9ekx7mp0sh8v7p&#39;&gt;nevent1q…8v7p&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;A full account export feature would be essential should a factory reset be required following an app crash.
    </content>
    <updated>2026-03-31T14:48:34Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsp5y7csv74rsck6rgddrh2xpvhrevya5da0h6e09kz4vvls4lwdlspfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzqpnrnguxe8qszsshvgkvhn6qjzxy7xsvx03rlrtddr62haj4lrm3vna9vt</id>
    
      <title type="html">Yay Just published @npub1kds…nsze site as #nsite with nsyte ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsp5y7csv74rsck6rgddrh2xpvhrevya5da0h6e09kz4vvls4lwdlspfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzqpnrnguxe8qszsshvgkvhn6qjzxy7xsvx03rlrtddr62haj4lrm3vna9vt" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsdm7p20ae3ad6307k5qtky5ugrgztkk7ysxlwq0zw0xn3s8g4ralgpzemhxue69uhhyetvv9ujumt0wd68ytnsw43z7wm7fqs&#39;&gt;nevent1q…7fqs&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Yay&lt;br/&gt;&lt;br/&gt;Just published &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1kdstrkmhv0yx8pdqcf9ed8l26752gqprx68twg7qp5nsd7qtegnsr3nsze&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Kubo.watch&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1kds…nsze&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; site as #nsite with nsyte v0.24.1&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://4gy5gt343to4vwj98qwa1lohuw99i6zuifk6souzx4smg3376vkubowatch.nsite.lol/&#34;&gt;https://4gy5gt343to4vwj98qwa1lohuw99i6zuifk6souzx4smg3376vkubowatch.nsite.lol/&lt;/a&gt;&lt;br/&gt;&lt;a href=&#34;https://4gy5gt343to4vwj98qwa1lohuw99i6zuifk6souzx4smg3376vkubowatch.nosto.re/&#34;&gt;https://4gy5gt343to4vwj98qwa1lohuw99i6zuifk6souzx4smg3376vkubowatch.nosto.re/&lt;/a&gt;
    </content>
    <updated>2026-03-30T09:23:51Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqspkm9zaw0e92f3k3eggdz0hydyte4av0qkn9gpetwr4m2evffm6dspfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzplfq3m5v3u5r0q9f255fdeyz8nyac6lagssx8zy4wugxjs8ajf7pdsq6kc</id>
    
      <title type="html">https://youtube.com/shorts/kpPgUYECvQs I never thought I&amp;#39;d ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqspkm9zaw0e92f3k3eggdz0hydyte4av0qkn9gpetwr4m2evffm6dspfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzplfq3m5v3u5r0q9f255fdeyz8nyac6lagssx8zy4wugxjs8ajf7pdsq6kc" />
    <content type="html">
      &lt;a href=&#34;https://youtube.com/shorts/kpPgUYECvQs&#34;&gt;https://youtube.com/shorts/kpPgUYECvQs&lt;/a&gt;&lt;br/&gt;I never thought I&amp;#39;d miss President Obama, but I miss President Obama. It was all downhill, after him.
    </content>
    <updated>2026-03-29T13:58:14Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsqv2uwmn6as28h7wxgvy9hwtep8f5ay7dlhvwxhnhrlefs90jmxccpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzqrvhh6h9vl7we8r9wncudmmpym4fd82fjtp3nrj3crav2tzjwjs5nsnlte</id>
    
      <title type="html">Bruh... @nprofile…wrn5 are you gonna take that?!</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsqv2uwmn6as28h7wxgvy9hwtep8f5ay7dlhvwxhnhrlefs90jmxccpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzqrvhh6h9vl7we8r9wncudmmpym4fd82fjtp3nrj3crav2tzjwjs5nsnlte" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqst2cqlyzgr896ammhu7cjf8pa3y6ug0ftp26srf6r8qqgapwjuymspzamhxue69uhhyetvv9ujuurjd9kkzmpwdejhgtc6lsjn6&#39;&gt;nevent1q…sjn6&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Bruh... &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nprofile1qqstnem9g6aqv3tw6vqaneftcj06frns56lj9q470gdww228vysz8hqpz3mhxue69uhkzmr8duh82arcduhx7mn99uq3vamnwvaz7tm9v3jkutnwdaehgu3wd3skuep0qy88wumn8ghj7mn0wvhxcmmv9usrwrn5&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;TheGuySwann&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;nprofile…wrn5&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; are you gonna take that?! 
    </content>
    <updated>2026-03-20T16:46:42Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqst0g50eqw5dkqwc27pmm53x3s7d64pfdnc32w8dlkds6h60mcly0qpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzqkeldynf8ektvr6r39sqzysw3ckyd7mqdd65wvgpc970a2z2we7cuenv5e</id>
    
      <title type="html">GM 🫂 did you remade it ? It seems different..</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqst0g50eqw5dkqwc27pmm53x3s7d64pfdnc32w8dlkds6h60mcly0qpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzqkeldynf8ektvr6r39sqzysw3ckyd7mqdd65wvgpc970a2z2we7cuenv5e" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqswpcktyv5eqvj27uv565clnjc0lu558w9cupljkplklmxspudz8tqprpmhxue69uhkv6tvw3jhytnwdaehgu3wwa5kuef0kugmcx&#39;&gt;nevent1q…gmcx&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;GM 🫂 did you remade it ? It seems different..
    </content>
    <updated>2026-03-05T17:22:53Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs2flp89346xt0pddhvs6k37xsqjmhwuxlj6ltsetnphnm24admy6qpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzpzafy4s95fhr47eex588d440fcm7jxc706p5u0afz825d78pelgac48z4p</id>
    
      <title type="html">LMAO it&amp;#39;s soooo old, like 30&#43; years or something, plus its so ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs2flp89346xt0pddhvs6k37xsqjmhwuxlj6ltsetnphnm24admy6qpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzpzafy4s95fhr47eex588d440fcm7jxc706p5u0afz825d78pelgac48z4p" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsp53c9a8j4y5dm3zuhx46azyfskyva26vkjnyjcmzd6kxu0md4exqpft3sz&#39;&gt;nevent1q…t3sz&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;LMAO it&amp;#39;s soooo old, like 30&#43; years or something, plus its so expensive and France has more debt than Greece had before Greece&amp;#39;s crazy Depression of 2008 &#43; no one signing up for conscription in France 🇫🇷 😆&lt;br/&gt;&lt;br/&gt;Aussi, t&amp;#39;a vu ça? 🤮 &lt;br/&gt;&lt;a href=&#34;https://www.instagram.com/reel/DVS9bfwDExz/&#34;&gt;https://www.instagram.com/reel/DVS9bfwDExz/&lt;/a&gt;  &lt;br/&gt;&lt;br/&gt;
    </content>
    <updated>2026-03-05T16:22:34Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsxalyp54jntfzc4x9vsx9lhq3xgrvddcjv86q8zhj72ap0458hdhcpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzpde8f55w86vrhaeqmd955y4rraw8aunzxgxstsj7eyzgntyev2xtulpdmd</id>
    
      <title type="html">Oh, very nice! That should weed out most bots that have been ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsxalyp54jntfzc4x9vsx9lhq3xgrvddcjv86q8zhj72ap0458hdhcpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzpde8f55w86vrhaeqmd955y4rraw8aunzxgxstsj7eyzgntyev2xtulpdmd" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsq9r7e4mky9mffs8yhft4c08mwv932ryaqpdasw8gz9ncfx8a2u6sprfmhxue69uhhyetvv9ujuat50phjummwv5hkjmnzdauqagaws5&#39;&gt;nevent1q…aws5&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Oh, very nice! That should weed out most bots that have been followed by a few of a user&amp;#39;s follows.&lt;br/&gt;nostr:nevent1qqs2h5d4224xmvvkalap64k2lu2lfphuezpdsts8f5ywx3c8mksvsdcpzpmhxue69uhkummnw3ezumrpdejqyg9hyaxj3clfswlhyrd5kjsj5v04clhjvgeq6pwztmysfzdvn93gevqpwnmd
    </content>
    <updated>2026-02-27T02:09:32Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsgn9y2nkjazgcafqaqlnephwgvyczxxwwx7xgsgncu0pvuwsyhxkspfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzplgzvey9waaaw05hclph75svs0yzud30unp956lf8uecqzpagert3yqlvh</id>
    
      <title>Nostr event nevent1qqsgn9y2nkjazgcafqaqlnephwgvyczxxwwx7xgsgncu0pvuwsyhxkspfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzplgzvey9waaaw05hclph75svs0yzud30unp956lf8uecqzpagert3yqlvh</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsgn9y2nkjazgcafqaqlnephwgvyczxxwwx7xgsgncu0pvuwsyhxkspfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzplgzvey9waaaw05hclph75svs0yzud30unp956lf8uecqzpagert3yqlvh" />
    <content type="html">
      GM! &lt;br/&gt;&lt;br/&gt; &lt;img src=&#34;https://image.nostr.build/2a1030642d0efe14dd7934cda72ad61e41379942716d871df6a70e486234b377.jpg&#34;&gt; 
    </content>
    <updated>2026-02-26T06:08:43Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsdh7sghezf30pgylatc704s65d3n6eemkhmzznan5fnxxhqkkgg5spfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzqtef4geu9ga5tsh0xgsjs7fy3vh55jdqq27smc86zmy5uyu2cmcn44yc46</id>
    
      <title>Nostr event nevent1qqsdh7sghezf30pgylatc704s65d3n6eemkhmzznan5fnxxhqkkgg5spfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzqtef4geu9ga5tsh0xgsjs7fy3vh55jdqq27smc86zmy5uyu2cmcn44yc46</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsdh7sghezf30pgylatc704s65d3n6eemkhmzznan5fnxxhqkkgg5spfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzqtef4geu9ga5tsh0xgsjs7fy3vh55jdqq27smc86zmy5uyu2cmcn44yc46" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs0tmes04tvrjz8c2sm5u6h42dng3fwq7fexvyhg6s6lzywya7whdqrt2tl6&#39;&gt;nevent1q…2tl6&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;🤣 &lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt; &lt;img src=&#34;https://blossom.primal.net/43d1990676679b4e1b5e506868d73038f2e08dff30311f40cf4830a3d8a47774.jpg&#34;&gt; 
    </content>
    <updated>2026-01-26T05:26:38Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs0pt2xvjm3639h7hgfl7yyqjc39swksq6xk4fkes8kzg636jjj6pgpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzpgqgmmc409hm4xsdd74sf68a2uyf9pwel4g9mfdg8l5244t6x4jdqqwtqd</id>
    
      <title type="html">@nprofile…ptz7 I considered using blossom, in fact I even wrote ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs0pt2xvjm3639h7hgfl7yyqjc39swksq6xk4fkes8kzg636jjj6pgpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzpgqgmmc409hm4xsdd74sf68a2uyf9pwel4g9mfdg8l5244t6x4jdqqwtqd" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsfarejtfrqcehw484umkyv8uqkyfkq7ycvw6xdrykjvdj25lthw6sppemhxue69uhkummn9ekx7mp0lye369&#39;&gt;nevent1q…e369&lt;/a&gt;&lt;br/&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;/nprofile1qqsy2ga7trfetvd3j65m3jptqw9k39wtq2mg85xz2w542p5dhg06e5qppemhxue69uhkummn9ekx7mp0qy2hwumn8ghj7un9d3shjtnyv9kh2uewd9hj7qghwaehxw309aex2mrp0yh8qunfd4skctnwv46z75uptz7&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Sirius&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;nprofile…ptz7&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; I considered using blossom, in fact I even wrote some code.&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;/nevent1qqsg9w72dve9myu29swk7w9wapqncndnhe98dmfrrd8cjd26fy3lsgsprdmhxue69uhhg6r9vehhyetnwshxummnw3erztnrdakj7q3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exsxpqqqqr9zufx4r0&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;nevent1q…x4r0&lt;/a&gt;&lt;/span&gt;  &lt;/div&gt; From 6bcb58925ad5a7ec2421718fb2996add9080f7bc Mon Sep 17 00:00:00 2001&lt;br/&gt;From: DanConwayDev &lt;DanConwayDev@protonmail.com&gt;&lt;br/&gt;Date: Fri, 15 Nov 2024 11:57:10 &#43;0000&lt;br/&gt;Subject: [PATCH] feat(blossom): blossom as remote using packs&lt;br/&gt;&lt;br/&gt;This is a WIP exploration of the use of blossom as an optional&lt;br/&gt;alternative to using a git server.&lt;br/&gt;&lt;br/&gt;The incomplete code focuses on how blossom could fit with nip34&lt;br/&gt;to most efficently replace the git server. It is missing the actual&lt;br/&gt;blossom interaction which would hopefully would be facilited by&lt;br/&gt;a new blossom feature in rust-nostr.&lt;br/&gt;&lt;br/&gt;This implementation tries to minimise the number of blobs required&lt;br/&gt;for download by using packs.&lt;br/&gt;&lt;br/&gt;If a branch tip is at height 1304 it will split the commits in into&lt;br/&gt;a number of packs. a pack the first 1024 commits, the next 256, the&lt;br/&gt;next 16 and the final 8.&lt;br/&gt;&lt;br/&gt;I planned for the identification of blossom servers to mirror the&lt;br/&gt;approach taken for relays:&lt;br/&gt; 1. list repository blossom servers in repo announcement event&lt;br/&gt;    kind 30617&lt;br/&gt; 2. also push to user blossom servers in the standard event for that&lt;br/&gt;This is not implemented, along with the rest of the blossom aspects.&lt;br/&gt;&lt;br/&gt;I&#39;m publishing this now as&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;/npub1elta7cneng3w8p9y4dw633qzdjr4kyvaparuyuttyrx6e8xp7xnq32cume&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Lez&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1elt…cume&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;&lt;br/&gt;has recently published a POC of an alternative approach and it makes&lt;br/&gt;sense to this alternative idea.&lt;br/&gt;---&lt;br/&gt; Cargo.lock                        |   1 &#43;&lt;br/&gt; Cargo.toml                        |   1 &#43;&lt;br/&gt; src/bin/git_remote_nostr/fetch.rs |   4 &#43;&#43;&#43;&#43;&lt;br/&gt; src/bin/git_remote_nostr/list.rs  |  23 &#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;-&lt;br/&gt; src/bin/git_remote_nostr/push.rs  | 124 &#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;-----&lt;br/&gt; src/lib/repo_state.rs             |  17 &#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;-&lt;br/&gt; 6 files changed, 163 insertions(&#43;), 7 deletions(-)&lt;br/&gt;&lt;br/&gt;diff --git a/Cargo.lock b/Cargo.lock&lt;br/&gt;index b20b60a..72b37a2 100644&lt;br/&gt;--- a/Cargo.lock&lt;br/&gt;&#43;&#43;&#43; b/Cargo.lock&lt;br/&gt;@@ -1805,6 &#43;1805,7 @@ dependencies = [&lt;br/&gt;  &#34;serde_json&#34;,&lt;br/&gt;  &#34;serde_yaml&#34;,&lt;br/&gt;  &#34;serial_test&#34;,&lt;br/&gt;&#43; &#34;sha2&#34;,&lt;br/&gt;  &#34;test_utils&#34;,&lt;br/&gt;  &#34;tokio&#34;,&lt;br/&gt;  &#34;urlencoding&#34;,&lt;br/&gt;diff --git a/Cargo.toml b/Cargo.toml&lt;br/&gt;index ed99aea..320a9f0 100644&lt;br/&gt;--- a/Cargo.toml&lt;br/&gt;&#43;&#43;&#43; b/Cargo.toml&lt;br/&gt;@@ -38,6 &#43;38,7 @@ serde_yaml = &#34;0.9.27&#34;&lt;br/&gt; tokio = &#34;1.33.0&#34;&lt;br/&gt; urlencoding = &#34;2.1.3&#34;&lt;br/&gt; zeroize = &#34;1.6.0&#34;&lt;br/&gt;&#43;sha2 = &#34;0.10.8&#34;&lt;br/&gt; &lt;br/&gt; [dev-dependencies]&lt;br/&gt; assert_cmd = &#34;2.0.12&#34;&lt;br/&gt;diff --git a/src/bin/git_remote_nostr/fetch.rs b/src/bin/git_remote_nostr/fetch.rs&lt;br/&gt;index a972a2f..a1116c5 100644&lt;br/&gt;--- a/src/bin/git_remote_nostr/fetch.rs&lt;br/&gt;&#43;&#43;&#43; b/src/bin/git_remote_nostr/fetch.rs&lt;br/&gt;@@ -49,6 &#43;49,10 @@ pub async fn run_fetch(&lt;br/&gt;     let term = console::Term::stderr();&lt;br/&gt; &lt;br/&gt;     for git_server_url in &amp;repo_ref.git_server {&lt;br/&gt;&#43;        if git_server_url.eq(&#34;blossom&#34;) {&lt;br/&gt;&#43;            // TODO download missing blobs&lt;br/&gt;&#43;            continue;&lt;br/&gt;&#43;        }&lt;br/&gt;         let term = console::Term::stderr();&lt;br/&gt;         if let Err(error) = fetch_from_git_server(&lt;br/&gt;             git_repo,&lt;br/&gt;diff --git a/src/bin/git_remote_nostr/list.rs b/src/bin/git_remote_nostr/list.rs&lt;br/&gt;index 92faa6b..d71c2d1 100644&lt;br/&gt;--- a/src/bin/git_remote_nostr/list.rs&lt;br/&gt;&#43;&#43;&#43; b/src/bin/git_remote_nostr/list.rs&lt;br/&gt;@@ -43,7 &#43;43,28 @@ pub async fn run_list(&lt;br/&gt; &lt;br/&gt;     let term = console::Term::stderr();&lt;br/&gt; &lt;br/&gt;-    let remote_states = list_from_remotes(&amp;term, git_repo, &amp;repo_ref.git_server, decoded_nostr_url);&lt;br/&gt;&#43;    let mut remote_states = list_from_remotes(&lt;br/&gt;&#43;        &amp;term,&lt;br/&gt;&#43;        git_repo,&lt;br/&gt;&#43;        &amp;repo_ref&lt;br/&gt;&#43;            .git_server&lt;br/&gt;&#43;            .iter()&lt;br/&gt;&#43;            // blossom will always match nostr state&lt;br/&gt;&#43;            .filter(|s| !s.starts_with(&#34;blossom&#34;))&lt;br/&gt;&#43;            .map(std::borrow::ToOwned::to_owned)&lt;br/&gt;&#43;            .collect::&lt;Vec&lt;String&gt;&gt;(),&lt;br/&gt;&#43;        decoded_nostr_url,&lt;br/&gt;&#43;    );&lt;br/&gt;&#43;    if repo_ref.git_server.iter().any(|s| s.eq(&#34;blossom&#34;)) {&lt;br/&gt;&#43;        if let Some(nostr_state) = nostr_state.clone() {&lt;br/&gt;&#43;            remote_states.insert(&#34;blossom&#34;.to_owned(), nostr_state.state.clone());&lt;br/&gt;&#43;        } else if let Some((_, state)) = remote_states.iter().last() {&lt;br/&gt;&#43;            remote_states.insert(&#34;blossom&#34;.to_owned(), state.clone());&lt;br/&gt;&#43;        } else {&lt;br/&gt;&#43;            // create blank state if no nostr state exists yet&lt;br/&gt;&#43;            remote_states.insert(&#34;blossom&#34;.to_owned(), HashMap::new());&lt;br/&gt;&#43;        }&lt;br/&gt;&#43;    }&lt;br/&gt; &lt;br/&gt;     let mut state = if let Some(nostr_state) = nostr_state {&lt;br/&gt;         for (name, value) in &amp;nostr_state.state {&lt;br/&gt;diff --git a/src/bin/git_remote_nostr/push.rs b/src/bin/git_remote_nostr/push.rs&lt;br/&gt;index db86c04..a12e8ba 100644&lt;br/&gt;--- a/src/bin/git_remote_nostr/push.rs&lt;br/&gt;&#43;&#43;&#43; b/src/bin/git_remote_nostr/push.rs&lt;br/&gt;@@ -2,6 &#43;2,7 @@ use core::str;&lt;br/&gt; use std::{&lt;br/&gt;     collections::{HashMap, HashSet},&lt;br/&gt;     io::Stdin,&lt;br/&gt;&#43;    str::FromStr,&lt;br/&gt;     sync::{Arc, Mutex},&lt;br/&gt;     time::Instant,&lt;br/&gt; };&lt;br/&gt;@@ -11,7 &#43;12,7 @@ use auth_git2::GitAuthenticator;&lt;br/&gt; use client::{get_events_from_cache, get_state_from_cache, send_events, sign_event, STATE_KIND};&lt;br/&gt; use console::Term;&lt;br/&gt; use git::{sha1_to_oid, RepoActions};&lt;br/&gt;-use git2::{Oid, Repository};&lt;br/&gt;&#43;use git2::{Buf, Commit, Oid, Repository};&lt;br/&gt; use git_events::{&lt;br/&gt;     generate_cover_letter_and_patch_events, generate_patch_event, get_commit_id_from_patch,&lt;br/&gt; };&lt;br/&gt;@@ -29,11 &#43;30,17 @@ use ngit::{&lt;br/&gt; };&lt;br/&gt; use nostr::nips::nip10::Marker;&lt;br/&gt; use nostr_sdk::{&lt;br/&gt;-    hashes::sha1::Hash as Sha1Hash, Event, EventBuilder, EventId, Kind, PublicKey, Tag,&lt;br/&gt;&#43;    hashes::{&lt;br/&gt;&#43;        hex::DisplayHex,&lt;br/&gt;&#43;        sha1::Hash as Sha1Hash,&lt;br/&gt;&#43;        sha256::{self, Hash as Sha256Hash},&lt;br/&gt;&#43;    },&lt;br/&gt;&#43;    Event, EventBuilder, EventId, Kind, PublicKey, Tag,&lt;br/&gt; };&lt;br/&gt; use nostr_signer::NostrSigner;&lt;br/&gt; use repo_ref::RepoRef;&lt;br/&gt; use repo_state::RepoState;&lt;br/&gt;&#43;use sha2::{Digest, Sha256};&lt;br/&gt; &lt;br/&gt; use crate::{&lt;br/&gt;     client::Client,&lt;br/&gt;@@ -74,7 &#43;81,17 @@ pub async fn run_push(&lt;br/&gt; &lt;br/&gt;     let list_outputs = match list_outputs {&lt;br/&gt;         Some(outputs) =&gt; outputs,&lt;br/&gt;-        _ =&gt; list_from_remotes(&amp;term, git_repo, &amp;repo_ref.git_server, decoded_nostr_url),&lt;br/&gt;&#43;        _ =&gt; list_from_remotes(&lt;br/&gt;&#43;            &amp;term,&lt;br/&gt;&#43;            git_repo,&lt;br/&gt;&#43;            &amp;repo_ref&lt;br/&gt;&#43;                .git_server&lt;br/&gt;&#43;                .iter()&lt;br/&gt;&#43;                .filter(|s| !s.eq(&amp;&#34;blossom&#34;))&lt;br/&gt;&#43;                .map(std::string::ToString::to_string)&lt;br/&gt;&#43;                .collect(),&lt;br/&gt;&#43;            decoded_nostr_url,&lt;br/&gt;&#43;        ),&lt;br/&gt;     };&lt;br/&gt; &lt;br/&gt;     let nostr_state = get_state_from_cache(git_repo.get_path()?, repo_ref).await;&lt;br/&gt;@@ -150,11 &#43;167,24 @@ pub async fn run_push(&lt;br/&gt;         }&lt;br/&gt;     }&lt;br/&gt; &lt;br/&gt;&#43;    let mut blossom_packs: Option&lt;HashMap&lt;sha256::Hash, Buf&gt;&gt; = None;&lt;br/&gt;     if !git_server_refspecs.is_empty() {&lt;br/&gt;         let new_state = generate_updated_state(git_repo, &amp;existing_state, &amp;git_server_refspecs)?;&lt;br/&gt;&#43;        let blossom_hashes = if repo_ref.git_server.contains(&amp;&#34;blossom&#34;.to_string()) {&lt;br/&gt;&#43;            let (blossom_hashes, packs) = create_blossom_packs(&amp;new_state, git_repo)?;&lt;br/&gt;&#43;            blossom_packs = Some(packs);&lt;br/&gt;&#43;            blossom_hashes&lt;br/&gt;&#43;        } else {&lt;br/&gt;&#43;            HashSet::new()&lt;br/&gt;&#43;        };&lt;br/&gt; &lt;br/&gt;-        let new_repo_state =&lt;br/&gt;-            RepoState::build(repo_ref.identifier.clone(), new_state, &amp;signer).await?;&lt;br/&gt;&#43;        let new_repo_state = RepoState::build(&lt;br/&gt;&#43;            repo_ref.identifier.clone(),&lt;br/&gt;&#43;            new_state,&lt;br/&gt;&#43;            blossom_hashes,&lt;br/&gt;&#43;            &amp;signer,&lt;br/&gt;&#43;        )&lt;br/&gt;&#43;        .await?;&lt;br/&gt; &lt;br/&gt;         events.push(new_repo_state.event);&lt;br/&gt; &lt;br/&gt;@@ -325,6 &#43;355,13 @@ pub async fn run_push(&lt;br/&gt; &lt;br/&gt;     // TODO make async - check gitlib2 callbacks work async&lt;br/&gt; &lt;br/&gt;&#43;    if let Some(packs) = blossom_packs {&lt;br/&gt;&#43;        // TODO: upload blossom packs&lt;br/&gt;&#43;        for (_hash, _pack) in packs {&lt;br/&gt;&#43;            // blossom::upload(pack)&lt;br/&gt;&#43;        }&lt;br/&gt;&#43;    }&lt;br/&gt;&#43;&lt;br/&gt;     for (git_server_url, remote_refspecs) in remote_refspecs {&lt;br/&gt;         let remote_refspecs = remote_refspecs&lt;br/&gt;             .iter()&lt;br/&gt;@@ -863,6 &#43;900,71 @@ fn generate_updated_state(&lt;br/&gt;     Ok(new_state)&lt;br/&gt; }&lt;br/&gt; &lt;br/&gt;&#43;fn create_blossom_packs(&lt;br/&gt;&#43;    state: &amp;HashMap&lt;String, String&gt;,&lt;br/&gt;&#43;    git_repo: &amp;Repo,&lt;br/&gt;&#43;) -&gt; Result&lt;(HashSet&lt;sha256::Hash&gt;, HashMap&lt;sha256::Hash, Buf&gt;)&gt; {&lt;br/&gt;&#43;    let mut blossom_hashes = HashSet::new();&lt;br/&gt;&#43;    let mut blossom_packs = HashMap::new();&lt;br/&gt;&#43;    for commit_id in state.values() {&lt;br/&gt;&#43;        if let Ok(oid) = Oid::from_str(commit_id) {&lt;br/&gt;&#43;            if let Ok(commit) = git_repo.git_repo.find_commit(oid) {&lt;br/&gt;&#43;                let height = get_height(&amp;commit, git_repo)?;&lt;br/&gt;&#43;                let mut revwalk = git_repo.git_repo.revwalk()?;&lt;br/&gt;&#43;                revwalk.push(oid)?;&lt;br/&gt;&#43;                let mut counter = 0;&lt;br/&gt;&#43;                for pack_size in split_into_powers_of_2(height) {&lt;br/&gt;&#43;                    let mut pack = git_repo.git_repo.packbuilder()?;&lt;br/&gt;&#43;                    while counter &lt; pack_size {&lt;br/&gt;&#43;                        if let Some(oid) = revwalk.next() {&lt;br/&gt;&#43;                            pack.insert_commit(oid?)?;&lt;br/&gt;&#43;                            counter &#43;= 1;&lt;br/&gt;&#43;                        }&lt;br/&gt;&#43;                    }&lt;br/&gt;&#43;                    let mut buffer = Buf::new();&lt;br/&gt;&#43;                    pack.write_buf(&amp;mut buffer)?;&lt;br/&gt;&#43;                    let hash = buffer_to_sha256_hash(&amp;buffer);&lt;br/&gt;&#43;                    blossom_hashes.insert(hash);&lt;br/&gt;&#43;                    blossom_packs.insert(hash, buffer);&lt;br/&gt;&#43;                    counter = 0;&lt;br/&gt;&#43;                }&lt;br/&gt;&#43;            }&lt;br/&gt;&#43;        }&lt;br/&gt;&#43;    }&lt;br/&gt;&#43;    Ok((blossom_hashes, blossom_packs))&lt;br/&gt;&#43;}&lt;br/&gt;&#43;&lt;br/&gt;&#43;fn get_height(commit: &amp;Commit, git_repo: &amp;Repo) -&gt; Result&lt;u32&gt; {&lt;br/&gt;&#43;    let mut revwalk = git_repo.git_repo.revwalk()?;&lt;br/&gt;&#43;    revwalk.push(commit.id())?;&lt;br/&gt;&#43;    Ok(u32::try_from(revwalk.count())?)&lt;br/&gt;&#43;}&lt;br/&gt;&#43;&lt;br/&gt;&#43;fn split_into_powers_of_2(height: u32) -&gt; Vec&lt;u32&gt; {&lt;br/&gt;&#43;    let mut powers = Vec::new();&lt;br/&gt;&#43;    let mut remaining = height;&lt;br/&gt;&#43;&lt;br/&gt;&#43;    // Decompose the height into powers of 2&lt;br/&gt;&#43;    for i in (0..32).rev() {&lt;br/&gt;&#43;        let power = 1 &lt;&lt; i; // Calculate 2^i&lt;br/&gt;&#43;        while remaining &gt;= power {&lt;br/&gt;&#43;            powers.push(power);&lt;br/&gt;&#43;            remaining -= power;&lt;br/&gt;&#43;        }&lt;br/&gt;&#43;    }&lt;br/&gt;&#43;&lt;br/&gt;&#43;    powers&lt;br/&gt;&#43;}&lt;br/&gt;&#43;&lt;br/&gt;&#43;fn buffer_to_sha256_hash(buffer: &amp;Buf) -&gt; sha256::Hash {&lt;br/&gt;&#43;    let mut hasher = Sha256::new();&lt;br/&gt;&#43;    hasher.update(buffer.as_ref());&lt;br/&gt;&#43;    let hash = hasher&lt;br/&gt;&#43;        .finalize()&lt;br/&gt;&#43;        .to_hex_string(nostr_sdk::hashes::hex::Case::Lower);&lt;br/&gt;&#43;    sha256::Hash::from_str(&amp;hash).unwrap()&lt;br/&gt;&#43;}&lt;br/&gt;&#43;&lt;br/&gt; async fn get_merged_status_events(&lt;br/&gt;     term: &amp;console::Term,&lt;br/&gt;     repo_ref: &amp;RepoRef,&lt;br/&gt;@@ -1186,6 &#43;1288,7 @@ trait BuildRepoState {&lt;br/&gt;     async fn build(&lt;br/&gt;         identifier: String,&lt;br/&gt;         state: HashMap&lt;String, String&gt;,&lt;br/&gt;&#43;        blossom: HashSet&lt;Sha256Hash&gt;,&lt;br/&gt;         signer: &amp;NostrSigner,&lt;br/&gt;     ) -&gt; Result&lt;RepoState&gt;;&lt;br/&gt; }&lt;br/&gt;@@ -1193,6 &#43;1296,7 @@ impl BuildRepoState for RepoState {&lt;br/&gt;     async fn build(&lt;br/&gt;         identifier: String,&lt;br/&gt;         state: HashMap&lt;String, String&gt;,&lt;br/&gt;&#43;        blossom: HashSet&lt;Sha256Hash&gt;,&lt;br/&gt;         signer: &amp;NostrSigner,&lt;br/&gt;     ) -&gt; Result&lt;RepoState&gt; {&lt;br/&gt;         let mut tags = vec![Tag::identifier(identifier.clone())];&lt;br/&gt;@@ -1202,10 &#43;1306,20 @@ impl BuildRepoState for RepoState {&lt;br/&gt;                 vec![value.clone()],&lt;br/&gt;             ));&lt;br/&gt;         }&lt;br/&gt;&#43;        if !blossom.is_empty() {&lt;br/&gt;&#43;            tags.push(Tag::custom(&lt;br/&gt;&#43;                nostr_sdk::TagKind::Custom(&#34;blossom&#34;.into()),&lt;br/&gt;&#43;                blossom&lt;br/&gt;&#43;                    .iter()&lt;br/&gt;&#43;                    .map(std::string::ToString::to_string)&lt;br/&gt;&#43;                    .collect::&lt;Vec&lt;String&gt;&gt;(),&lt;br/&gt;&#43;            ));&lt;br/&gt;&#43;        }&lt;br/&gt;         let event = sign_event(EventBuilder::new(STATE_KIND, &#34;&#34;, tags), signer).await?;&lt;br/&gt;         Ok(RepoState {&lt;br/&gt;             identifier,&lt;br/&gt;             state,&lt;br/&gt;&#43;            blossom,&lt;br/&gt;             event,&lt;br/&gt;         })&lt;br/&gt;     }&lt;br/&gt;diff --git a/src/lib/repo_state.rs b/src/lib/repo_state.rs&lt;br/&gt;index c3a7606..19e78b6 100644&lt;br/&gt;--- a/src/lib/repo_state.rs&lt;br/&gt;&#43;&#43;&#43; b/src/lib/repo_state.rs&lt;br/&gt;@@ -1,11 &#43;1,17 @@&lt;br/&gt;-use std::collections::HashMap;&lt;br/&gt;&#43;use std::{&lt;br/&gt;&#43;    collections::{HashMap, HashSet},&lt;br/&gt;&#43;    str::FromStr,&lt;br/&gt;&#43;};&lt;br/&gt; &lt;br/&gt; use anyhow::{Context, Result};&lt;br/&gt; use git2::Oid;&lt;br/&gt;&#43;use nostr_sdk::hashes::sha256::Hash;&lt;br/&gt; &lt;br/&gt;&#43;#[derive(Clone)]&lt;br/&gt; pub struct RepoState {&lt;br/&gt;     pub identifier: String,&lt;br/&gt;     pub state: HashMap&lt;String, String&gt;,&lt;br/&gt;&#43;    pub blossom: HashSet&lt;Hash&gt;,&lt;br/&gt;     pub event: nostr::Event,&lt;br/&gt; }&lt;br/&gt; &lt;br/&gt;@@ -14,6 &#43;20,7 @@ impl RepoState {&lt;br/&gt;         state_events.sort_by_key(|e| e.created_at);&lt;br/&gt;         let event = state_events.first().context(&#34;no state events&#34;)?;&lt;br/&gt;         let mut state = HashMap::new();&lt;br/&gt;&#43;        let mut blossom = HashSet::new();&lt;br/&gt;         for tag in event.tags.iter() {&lt;br/&gt;             if let Some(name) = tag.as_slice().first() {&lt;br/&gt;                 if [&#34;refs/heads/&#34;, &#34;refs/tags&#34;, &#34;HEAD&#34;]&lt;br/&gt;@@ -26,6 &#43;33,13 @@ impl RepoState {&lt;br/&gt;                         }&lt;br/&gt;                     }&lt;br/&gt;                 }&lt;br/&gt;&#43;                if name.eq(&#34;blossom&#34;) {&lt;br/&gt;&#43;                    for s in tag.clone().to_vec() {&lt;br/&gt;&#43;                        if let Ok(hash) = Hash::from_str(&amp;s) {&lt;br/&gt;&#43;                            blossom.insert(hash);&lt;br/&gt;&#43;                        }&lt;br/&gt;&#43;                    }&lt;br/&gt;&#43;                }&lt;br/&gt;             }&lt;br/&gt;         }&lt;br/&gt;         Ok(RepoState {&lt;br/&gt;@@ -35,6 &#43;49,7 @@ impl RepoState {&lt;br/&gt;                 .context(&#34;existing event must have an identifier&#34;)?&lt;br/&gt;                 .to_string(),&lt;br/&gt;             state,&lt;br/&gt;&#43;            blossom,&lt;br/&gt;             event: event.clone(),&lt;br/&gt;         })&lt;br/&gt;     }&lt;br/&gt;--&lt;br/&gt;libgit2 1.8.1&lt;br/&gt;&lt;br/&gt; &lt;/blockquote&gt;I thought the most efficent approach would be to store git packs as blossom blobs. I havent studied your code but from the documentation you are somehow using 2mb chunks? I can see how its naturaly evolved from your &amp;#39;files&amp;#39; usecase.
    </content>
    <updated>2025-12-27T11:54:59Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs04q75vvxjy3gx5q4dppvdgnl2j0emvwvfkcxyrarr9jaag7qrckcpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzpgqgmmc409hm4xsdd74sf68a2uyf9pwel4g9mfdg8l5244t6x4jd39vx8y</id>
    
      <title type="html">Interesting. You&amp;#39;d end up with a lot of objects with that ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs04q75vvxjy3gx5q4dppvdgnl2j0emvwvfkcxyrarr9jaag7qrckcpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzpgqgmmc409hm4xsdd74sf68a2uyf9pwel4g9mfdg8l5244t6x4jd39vx8y" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs9d4qwpml578zzm9lzv5g28pamjk89dhu7hwu5jmzzxwryp7plgqgpz4mhxue69uhhyetvv9ujuerpd46hxtnfduhs2kckve&#39;&gt;nevent1q…ckve&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Interesting. You&amp;#39;d end up with a lot of objects with that approach and eventually it would be too big for the event size. I thought about doing it with storing packs in blossom. Here is my code to play with that idea. &lt;a href=&#34;https://gitworkshop.dev/danconwaydev.com/ngit/prs/note1s2au56ejtkfc5tqaduu2a6zp83xm80j2wmkjxx603y645jfrlq3qmp88s4&#34;&gt;https://gitworkshop.dev/danconwaydev.com/ngit/prs/note1s2au56ejtkfc5tqaduu2a6zp83xm80j2wmkjxx603y645jfrlq3qmp88s4&lt;/a&gt; I would have made it into a POC if rust-nostr had blossom support at the time. It does now. It turns out that having a git server is way more flexible so ngit.dev/grasp came to be. Let git be git and let nostr be nostr.
    </content>
    <updated>2025-11-27T19:43:33Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsddmy4smnnjjk4hafahe78ydggn86d605psjt4ah9ra0v0zygqurcpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzpgqgmmc409hm4xsdd74sf68a2uyf9pwel4g9mfdg8l5244t6x4jdpmyqq3</id>
    
      <title type="html">Whats a blossom pack? is it related to the blossom pack idea i ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsddmy4smnnjjk4hafahe78ydggn86d605psjt4ah9ra0v0zygqurcpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzpgqgmmc409hm4xsdd74sf68a2uyf9pwel4g9mfdg8l5244t6x4jdpmyqq3" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsq7057kkp350a5utz8c7f9k8grhfjmk0u5eywrxj3xallt74zxnsqpzamhxue69uhhyetvv9ujuurjd9kkzmpwdejhgtc04gcrp&#39;&gt;nevent1q…gcrp&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Whats a blossom pack? is it related to the blossom pack idea i outlined in&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;/nevent1qvzqqqqx2ypzpgqgmmc409hm4xsdd74sf68a2uyf9pwel4g9mfdg8l5244t6x4jdqqsg9w72dve9myu29swk7w9wapqncndnhe98dmfrrd8cjd26fy3lsgsnkqr9d&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;nevent1q…qr9d&lt;/a&gt;&lt;/span&gt; &lt;/div&gt; From 6bcb58925ad5a7ec2421718fb2996add9080f7bc Mon Sep 17 00:00:00 2001&lt;br/&gt;From: DanConwayDev &lt;DanConwayDev@protonmail.com&gt;&lt;br/&gt;Date: Fri, 15 Nov 2024 11:57:10 &#43;0000&lt;br/&gt;Subject: [PATCH] feat(blossom): blossom as remote using packs&lt;br/&gt;&lt;br/&gt;This is a WIP exploration of the use of blossom as an optional&lt;br/&gt;alternative to using a git server.&lt;br/&gt;&lt;br/&gt;The incomplete code focuses on how blossom could fit with nip34&lt;br/&gt;to most efficently replace the git server. It is missing the actual&lt;br/&gt;blossom interaction which would hopefully would be facilited by&lt;br/&gt;a new blossom feature in rust-nostr.&lt;br/&gt;&lt;br/&gt;This implementation tries to minimise the number of blobs required&lt;br/&gt;for download by using packs.&lt;br/&gt;&lt;br/&gt;If a branch tip is at height 1304 it will split the commits in into&lt;br/&gt;a number of packs. a pack the first 1024 commits, the next 256, the&lt;br/&gt;next 16 and the final 8.&lt;br/&gt;&lt;br/&gt;I planned for the identification of blossom servers to mirror the&lt;br/&gt;approach taken for relays:&lt;br/&gt; 1. list repository blossom servers in repo announcement event&lt;br/&gt;    kind 30617&lt;br/&gt; 2. also push to user blossom servers in the standard event for that&lt;br/&gt;This is not implemented, along with the rest of the blossom aspects.&lt;br/&gt;&lt;br/&gt;I&#39;m publishing this now as&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;/npub1elta7cneng3w8p9y4dw633qzdjr4kyvaparuyuttyrx6e8xp7xnq32cume&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Lez&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1elt…cume&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;&lt;br/&gt;has recently published a POC of an alternative approach and it makes&lt;br/&gt;sense to this alternative idea.&lt;br/&gt;---&lt;br/&gt; Cargo.lock                        |   1 &#43;&lt;br/&gt; Cargo.toml                        |   1 &#43;&lt;br/&gt; src/bin/git_remote_nostr/fetch.rs |   4 &#43;&#43;&#43;&#43;&lt;br/&gt; src/bin/git_remote_nostr/list.rs  |  23 &#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;-&lt;br/&gt; src/bin/git_remote_nostr/push.rs  | 124 &#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;-----&lt;br/&gt; src/lib/repo_state.rs             |  17 &#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;-&lt;br/&gt; 6 files changed, 163 insertions(&#43;), 7 deletions(-)&lt;br/&gt;&lt;br/&gt;diff --git a/Cargo.lock b/Cargo.lock&lt;br/&gt;index b20b60a..72b37a2 100644&lt;br/&gt;--- a/Cargo.lock&lt;br/&gt;&#43;&#43;&#43; b/Cargo.lock&lt;br/&gt;@@ -1805,6 &#43;1805,7 @@ dependencies = [&lt;br/&gt;  &#34;serde_json&#34;,&lt;br/&gt;  &#34;serde_yaml&#34;,&lt;br/&gt;  &#34;serial_test&#34;,&lt;br/&gt;&#43; &#34;sha2&#34;,&lt;br/&gt;  &#34;test_utils&#34;,&lt;br/&gt;  &#34;tokio&#34;,&lt;br/&gt;  &#34;urlencoding&#34;,&lt;br/&gt;diff --git a/Cargo.toml b/Cargo.toml&lt;br/&gt;index ed99aea..320a9f0 100644&lt;br/&gt;--- a/Cargo.toml&lt;br/&gt;&#43;&#43;&#43; b/Cargo.toml&lt;br/&gt;@@ -38,6 &#43;38,7 @@ serde_yaml = &#34;0.9.27&#34;&lt;br/&gt; tokio = &#34;1.33.0&#34;&lt;br/&gt; urlencoding = &#34;2.1.3&#34;&lt;br/&gt; zeroize = &#34;1.6.0&#34;&lt;br/&gt;&#43;sha2 = &#34;0.10.8&#34;&lt;br/&gt; &lt;br/&gt; [dev-dependencies]&lt;br/&gt; assert_cmd = &#34;2.0.12&#34;&lt;br/&gt;diff --git a/src/bin/git_remote_nostr/fetch.rs b/src/bin/git_remote_nostr/fetch.rs&lt;br/&gt;index a972a2f..a1116c5 100644&lt;br/&gt;--- a/src/bin/git_remote_nostr/fetch.rs&lt;br/&gt;&#43;&#43;&#43; b/src/bin/git_remote_nostr/fetch.rs&lt;br/&gt;@@ -49,6 &#43;49,10 @@ pub async fn run_fetch(&lt;br/&gt;     let term = console::Term::stderr();&lt;br/&gt; &lt;br/&gt;     for git_server_url in &amp;repo_ref.git_server {&lt;br/&gt;&#43;        if git_server_url.eq(&#34;blossom&#34;) {&lt;br/&gt;&#43;            // TODO download missing blobs&lt;br/&gt;&#43;            continue;&lt;br/&gt;&#43;        }&lt;br/&gt;         let term = console::Term::stderr();&lt;br/&gt;         if let Err(error) = fetch_from_git_server(&lt;br/&gt;             git_repo,&lt;br/&gt;diff --git a/src/bin/git_remote_nostr/list.rs b/src/bin/git_remote_nostr/list.rs&lt;br/&gt;index 92faa6b..d71c2d1 100644&lt;br/&gt;--- a/src/bin/git_remote_nostr/list.rs&lt;br/&gt;&#43;&#43;&#43; b/src/bin/git_remote_nostr/list.rs&lt;br/&gt;@@ -43,7 &#43;43,28 @@ pub async fn run_list(&lt;br/&gt; &lt;br/&gt;     let term = console::Term::stderr();&lt;br/&gt; &lt;br/&gt;-    let remote_states = list_from_remotes(&amp;term, git_repo, &amp;repo_ref.git_server, decoded_nostr_url);&lt;br/&gt;&#43;    let mut remote_states = list_from_remotes(&lt;br/&gt;&#43;        &amp;term,&lt;br/&gt;&#43;        git_repo,&lt;br/&gt;&#43;        &amp;repo_ref&lt;br/&gt;&#43;            .git_server&lt;br/&gt;&#43;            .iter()&lt;br/&gt;&#43;            // blossom will always match nostr state&lt;br/&gt;&#43;            .filter(|s| !s.starts_with(&#34;blossom&#34;))&lt;br/&gt;&#43;            .map(std::borrow::ToOwned::to_owned)&lt;br/&gt;&#43;            .collect::&lt;Vec&lt;String&gt;&gt;(),&lt;br/&gt;&#43;        decoded_nostr_url,&lt;br/&gt;&#43;    );&lt;br/&gt;&#43;    if repo_ref.git_server.iter().any(|s| s.eq(&#34;blossom&#34;)) {&lt;br/&gt;&#43;        if let Some(nostr_state) = nostr_state.clone() {&lt;br/&gt;&#43;            remote_states.insert(&#34;blossom&#34;.to_owned(), nostr_state.state.clone());&lt;br/&gt;&#43;        } else if let Some((_, state)) = remote_states.iter().last() {&lt;br/&gt;&#43;            remote_states.insert(&#34;blossom&#34;.to_owned(), state.clone());&lt;br/&gt;&#43;        } else {&lt;br/&gt;&#43;            // create blank state if no nostr state exists yet&lt;br/&gt;&#43;            remote_states.insert(&#34;blossom&#34;.to_owned(), HashMap::new());&lt;br/&gt;&#43;        }&lt;br/&gt;&#43;    }&lt;br/&gt; &lt;br/&gt;     let mut state = if let Some(nostr_state) = nostr_state {&lt;br/&gt;         for (name, value) in &amp;nostr_state.state {&lt;br/&gt;diff --git a/src/bin/git_remote_nostr/push.rs b/src/bin/git_remote_nostr/push.rs&lt;br/&gt;index db86c04..a12e8ba 100644&lt;br/&gt;--- a/src/bin/git_remote_nostr/push.rs&lt;br/&gt;&#43;&#43;&#43; b/src/bin/git_remote_nostr/push.rs&lt;br/&gt;@@ -2,6 &#43;2,7 @@ use core::str;&lt;br/&gt; use std::{&lt;br/&gt;     collections::{HashMap, HashSet},&lt;br/&gt;     io::Stdin,&lt;br/&gt;&#43;    str::FromStr,&lt;br/&gt;     sync::{Arc, Mutex},&lt;br/&gt;     time::Instant,&lt;br/&gt; };&lt;br/&gt;@@ -11,7 &#43;12,7 @@ use auth_git2::GitAuthenticator;&lt;br/&gt; use client::{get_events_from_cache, get_state_from_cache, send_events, sign_event, STATE_KIND};&lt;br/&gt; use console::Term;&lt;br/&gt; use git::{sha1_to_oid, RepoActions};&lt;br/&gt;-use git2::{Oid, Repository};&lt;br/&gt;&#43;use git2::{Buf, Commit, Oid, Repository};&lt;br/&gt; use git_events::{&lt;br/&gt;     generate_cover_letter_and_patch_events, generate_patch_event, get_commit_id_from_patch,&lt;br/&gt; };&lt;br/&gt;@@ -29,11 &#43;30,17 @@ use ngit::{&lt;br/&gt; };&lt;br/&gt; use nostr::nips::nip10::Marker;&lt;br/&gt; use nostr_sdk::{&lt;br/&gt;-    hashes::sha1::Hash as Sha1Hash, Event, EventBuilder, EventId, Kind, PublicKey, Tag,&lt;br/&gt;&#43;    hashes::{&lt;br/&gt;&#43;        hex::DisplayHex,&lt;br/&gt;&#43;        sha1::Hash as Sha1Hash,&lt;br/&gt;&#43;        sha256::{self, Hash as Sha256Hash},&lt;br/&gt;&#43;    },&lt;br/&gt;&#43;    Event, EventBuilder, EventId, Kind, PublicKey, Tag,&lt;br/&gt; };&lt;br/&gt; use nostr_signer::NostrSigner;&lt;br/&gt; use repo_ref::RepoRef;&lt;br/&gt; use repo_state::RepoState;&lt;br/&gt;&#43;use sha2::{Digest, Sha256};&lt;br/&gt; &lt;br/&gt; use crate::{&lt;br/&gt;     client::Client,&lt;br/&gt;@@ -74,7 &#43;81,17 @@ pub async fn run_push(&lt;br/&gt; &lt;br/&gt;     let list_outputs = match list_outputs {&lt;br/&gt;         Some(outputs) =&gt; outputs,&lt;br/&gt;-        _ =&gt; list_from_remotes(&amp;term, git_repo, &amp;repo_ref.git_server, decoded_nostr_url),&lt;br/&gt;&#43;        _ =&gt; list_from_remotes(&lt;br/&gt;&#43;            &amp;term,&lt;br/&gt;&#43;            git_repo,&lt;br/&gt;&#43;            &amp;repo_ref&lt;br/&gt;&#43;                .git_server&lt;br/&gt;&#43;                .iter()&lt;br/&gt;&#43;                .filter(|s| !s.eq(&amp;&#34;blossom&#34;))&lt;br/&gt;&#43;                .map(std::string::ToString::to_string)&lt;br/&gt;&#43;                .collect(),&lt;br/&gt;&#43;            decoded_nostr_url,&lt;br/&gt;&#43;        ),&lt;br/&gt;     };&lt;br/&gt; &lt;br/&gt;     let nostr_state = get_state_from_cache(git_repo.get_path()?, repo_ref).await;&lt;br/&gt;@@ -150,11 &#43;167,24 @@ pub async fn run_push(&lt;br/&gt;         }&lt;br/&gt;     }&lt;br/&gt; &lt;br/&gt;&#43;    let mut blossom_packs: Option&lt;HashMap&lt;sha256::Hash, Buf&gt;&gt; = None;&lt;br/&gt;     if !git_server_refspecs.is_empty() {&lt;br/&gt;         let new_state = generate_updated_state(git_repo, &amp;existing_state, &amp;git_server_refspecs)?;&lt;br/&gt;&#43;        let blossom_hashes = if repo_ref.git_server.contains(&amp;&#34;blossom&#34;.to_string()) {&lt;br/&gt;&#43;            let (blossom_hashes, packs) = create_blossom_packs(&amp;new_state, git_repo)?;&lt;br/&gt;&#43;            blossom_packs = Some(packs);&lt;br/&gt;&#43;            blossom_hashes&lt;br/&gt;&#43;        } else {&lt;br/&gt;&#43;            HashSet::new()&lt;br/&gt;&#43;        };&lt;br/&gt; &lt;br/&gt;-        let new_repo_state =&lt;br/&gt;-            RepoState::build(repo_ref.identifier.clone(), new_state, &amp;signer).await?;&lt;br/&gt;&#43;        let new_repo_state = RepoState::build(&lt;br/&gt;&#43;            repo_ref.identifier.clone(),&lt;br/&gt;&#43;            new_state,&lt;br/&gt;&#43;            blossom_hashes,&lt;br/&gt;&#43;            &amp;signer,&lt;br/&gt;&#43;        )&lt;br/&gt;&#43;        .await?;&lt;br/&gt; &lt;br/&gt;         events.push(new_repo_state.event);&lt;br/&gt; &lt;br/&gt;@@ -325,6 &#43;355,13 @@ pub async fn run_push(&lt;br/&gt; &lt;br/&gt;     // TODO make async - check gitlib2 callbacks work async&lt;br/&gt; &lt;br/&gt;&#43;    if let Some(packs) = blossom_packs {&lt;br/&gt;&#43;        // TODO: upload blossom packs&lt;br/&gt;&#43;        for (_hash, _pack) in packs {&lt;br/&gt;&#43;            // blossom::upload(pack)&lt;br/&gt;&#43;        }&lt;br/&gt;&#43;    }&lt;br/&gt;&#43;&lt;br/&gt;     for (git_server_url, remote_refspecs) in remote_refspecs {&lt;br/&gt;         let remote_refspecs = remote_refspecs&lt;br/&gt;             .iter()&lt;br/&gt;@@ -863,6 &#43;900,71 @@ fn generate_updated_state(&lt;br/&gt;     Ok(new_state)&lt;br/&gt; }&lt;br/&gt; &lt;br/&gt;&#43;fn create_blossom_packs(&lt;br/&gt;&#43;    state: &amp;HashMap&lt;String, String&gt;,&lt;br/&gt;&#43;    git_repo: &amp;Repo,&lt;br/&gt;&#43;) -&gt; Result&lt;(HashSet&lt;sha256::Hash&gt;, HashMap&lt;sha256::Hash, Buf&gt;)&gt; {&lt;br/&gt;&#43;    let mut blossom_hashes = HashSet::new();&lt;br/&gt;&#43;    let mut blossom_packs = HashMap::new();&lt;br/&gt;&#43;    for commit_id in state.values() {&lt;br/&gt;&#43;        if let Ok(oid) = Oid::from_str(commit_id) {&lt;br/&gt;&#43;            if let Ok(commit) = git_repo.git_repo.find_commit(oid) {&lt;br/&gt;&#43;                let height = get_height(&amp;commit, git_repo)?;&lt;br/&gt;&#43;                let mut revwalk = git_repo.git_repo.revwalk()?;&lt;br/&gt;&#43;                revwalk.push(oid)?;&lt;br/&gt;&#43;                let mut counter = 0;&lt;br/&gt;&#43;                for pack_size in split_into_powers_of_2(height) {&lt;br/&gt;&#43;                    let mut pack = git_repo.git_repo.packbuilder()?;&lt;br/&gt;&#43;                    while counter &lt; pack_size {&lt;br/&gt;&#43;                        if let Some(oid) = revwalk.next() {&lt;br/&gt;&#43;                            pack.insert_commit(oid?)?;&lt;br/&gt;&#43;                            counter &#43;= 1;&lt;br/&gt;&#43;                        }&lt;br/&gt;&#43;                    }&lt;br/&gt;&#43;                    let mut buffer = Buf::new();&lt;br/&gt;&#43;                    pack.write_buf(&amp;mut buffer)?;&lt;br/&gt;&#43;                    let hash = buffer_to_sha256_hash(&amp;buffer);&lt;br/&gt;&#43;                    blossom_hashes.insert(hash);&lt;br/&gt;&#43;                    blossom_packs.insert(hash, buffer);&lt;br/&gt;&#43;                    counter = 0;&lt;br/&gt;&#43;                }&lt;br/&gt;&#43;            }&lt;br/&gt;&#43;        }&lt;br/&gt;&#43;    }&lt;br/&gt;&#43;    Ok((blossom_hashes, blossom_packs))&lt;br/&gt;&#43;}&lt;br/&gt;&#43;&lt;br/&gt;&#43;fn get_height(commit: &amp;Commit, git_repo: &amp;Repo) -&gt; Result&lt;u32&gt; {&lt;br/&gt;&#43;    let mut revwalk = git_repo.git_repo.revwalk()?;&lt;br/&gt;&#43;    revwalk.push(commit.id())?;&lt;br/&gt;&#43;    Ok(u32::try_from(revwalk.count())?)&lt;br/&gt;&#43;}&lt;br/&gt;&#43;&lt;br/&gt;&#43;fn split_into_powers_of_2(height: u32) -&gt; Vec&lt;u32&gt; {&lt;br/&gt;&#43;    let mut powers = Vec::new();&lt;br/&gt;&#43;    let mut remaining = height;&lt;br/&gt;&#43;&lt;br/&gt;&#43;    // Decompose the height into powers of 2&lt;br/&gt;&#43;    for i in (0..32).rev() {&lt;br/&gt;&#43;        let power = 1 &lt;&lt; i; // Calculate 2^i&lt;br/&gt;&#43;        while remaining &gt;= power {&lt;br/&gt;&#43;            powers.push(power);&lt;br/&gt;&#43;            remaining -= power;&lt;br/&gt;&#43;        }&lt;br/&gt;&#43;    }&lt;br/&gt;&#43;&lt;br/&gt;&#43;    powers&lt;br/&gt;&#43;}&lt;br/&gt;&#43;&lt;br/&gt;&#43;fn buffer_to_sha256_hash(buffer: &amp;Buf) -&gt; sha256::Hash {&lt;br/&gt;&#43;    let mut hasher = Sha256::new();&lt;br/&gt;&#43;    hasher.update(buffer.as_ref());&lt;br/&gt;&#43;    let hash = hasher&lt;br/&gt;&#43;        .finalize()&lt;br/&gt;&#43;        .to_hex_string(nostr_sdk::hashes::hex::Case::Lower);&lt;br/&gt;&#43;    sha256::Hash::from_str(&amp;hash).unwrap()&lt;br/&gt;&#43;}&lt;br/&gt;&#43;&lt;br/&gt; async fn get_merged_status_events(&lt;br/&gt;     term: &amp;console::Term,&lt;br/&gt;     repo_ref: &amp;RepoRef,&lt;br/&gt;@@ -1186,6 &#43;1288,7 @@ trait BuildRepoState {&lt;br/&gt;     async fn build(&lt;br/&gt;         identifier: String,&lt;br/&gt;         state: HashMap&lt;String, String&gt;,&lt;br/&gt;&#43;        blossom: HashSet&lt;Sha256Hash&gt;,&lt;br/&gt;         signer: &amp;NostrSigner,&lt;br/&gt;     ) -&gt; Result&lt;RepoState&gt;;&lt;br/&gt; }&lt;br/&gt;@@ -1193,6 &#43;1296,7 @@ impl BuildRepoState for RepoState {&lt;br/&gt;     async fn build(&lt;br/&gt;         identifier: String,&lt;br/&gt;         state: HashMap&lt;String, String&gt;,&lt;br/&gt;&#43;        blossom: HashSet&lt;Sha256Hash&gt;,&lt;br/&gt;         signer: &amp;NostrSigner,&lt;br/&gt;     ) -&gt; Result&lt;RepoState&gt; {&lt;br/&gt;         let mut tags = vec![Tag::identifier(identifier.clone())];&lt;br/&gt;@@ -1202,10 &#43;1306,20 @@ impl BuildRepoState for RepoState {&lt;br/&gt;                 vec![value.clone()],&lt;br/&gt;             ));&lt;br/&gt;         }&lt;br/&gt;&#43;        if !blossom.is_empty() {&lt;br/&gt;&#43;            tags.push(Tag::custom(&lt;br/&gt;&#43;                nostr_sdk::TagKind::Custom(&#34;blossom&#34;.into()),&lt;br/&gt;&#43;                blossom&lt;br/&gt;&#43;                    .iter()&lt;br/&gt;&#43;                    .map(std::string::ToString::to_string)&lt;br/&gt;&#43;                    .collect::&lt;Vec&lt;String&gt;&gt;(),&lt;br/&gt;&#43;            ));&lt;br/&gt;&#43;        }&lt;br/&gt;         let event = sign_event(EventBuilder::new(STATE_KIND, &#34;&#34;, tags), signer).await?;&lt;br/&gt;         Ok(RepoState {&lt;br/&gt;             identifier,&lt;br/&gt;             state,&lt;br/&gt;&#43;            blossom,&lt;br/&gt;             event,&lt;br/&gt;         })&lt;br/&gt;     }&lt;br/&gt;diff --git a/src/lib/repo_state.rs b/src/lib/repo_state.rs&lt;br/&gt;index c3a7606..19e78b6 100644&lt;br/&gt;--- a/src/lib/repo_state.rs&lt;br/&gt;&#43;&#43;&#43; b/src/lib/repo_state.rs&lt;br/&gt;@@ -1,11 &#43;1,17 @@&lt;br/&gt;-use std::collections::HashMap;&lt;br/&gt;&#43;use std::{&lt;br/&gt;&#43;    collections::{HashMap, HashSet},&lt;br/&gt;&#43;    str::FromStr,&lt;br/&gt;&#43;};&lt;br/&gt; &lt;br/&gt; use anyhow::{Context, Result};&lt;br/&gt; use git2::Oid;&lt;br/&gt;&#43;use nostr_sdk::hashes::sha256::Hash;&lt;br/&gt; &lt;br/&gt;&#43;#[derive(Clone)]&lt;br/&gt; pub struct RepoState {&lt;br/&gt;     pub identifier: String,&lt;br/&gt;     pub state: HashMap&lt;String, String&gt;,&lt;br/&gt;&#43;    pub blossom: HashSet&lt;Hash&gt;,&lt;br/&gt;     pub event: nostr::Event,&lt;br/&gt; }&lt;br/&gt; &lt;br/&gt;@@ -14,6 &#43;20,7 @@ impl RepoState {&lt;br/&gt;         state_events.sort_by_key(|e| e.created_at);&lt;br/&gt;         let event = state_events.first().context(&#34;no state events&#34;)?;&lt;br/&gt;         let mut state = HashMap::new();&lt;br/&gt;&#43;        let mut blossom = HashSet::new();&lt;br/&gt;         for tag in event.tags.iter() {&lt;br/&gt;             if let Some(name) = tag.as_slice().first() {&lt;br/&gt;                 if [&#34;refs/heads/&#34;, &#34;refs/tags&#34;, &#34;HEAD&#34;]&lt;br/&gt;@@ -26,6 &#43;33,13 @@ impl RepoState {&lt;br/&gt;                         }&lt;br/&gt;                     }&lt;br/&gt;                 }&lt;br/&gt;&#43;                if name.eq(&#34;blossom&#34;) {&lt;br/&gt;&#43;                    for s in tag.clone().to_vec() {&lt;br/&gt;&#43;                        if let Ok(hash) = Hash::from_str(&amp;s) {&lt;br/&gt;&#43;                            blossom.insert(hash);&lt;br/&gt;&#43;                        }&lt;br/&gt;&#43;                    }&lt;br/&gt;&#43;                }&lt;br/&gt;             }&lt;br/&gt;         }&lt;br/&gt;         Ok(RepoState {&lt;br/&gt;@@ -35,6 &#43;49,7 @@ impl RepoState {&lt;br/&gt;                 .context(&#34;existing event must have an identifier&#34;)?&lt;br/&gt;                 .to_string(),&lt;br/&gt;             state,&lt;br/&gt;&#43;            blossom,&lt;br/&gt;             event: event.clone(),&lt;br/&gt;         })&lt;br/&gt;     }&lt;br/&gt;--&lt;br/&gt;libgit2 1.8.1&lt;br/&gt;&lt;br/&gt; &lt;/blockquote&gt;
    </content>
    <updated>2025-11-26T11:06:41Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqswcw50kvagmg9y0yfpgnsa4p300gka0xt349wv6h4c2z86lafwdwcpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzpx3p26f9t59r48n4780zunyg8jd79etptzrly2ewea43syau6krazv38w5</id>
    
      <title type="html">&amp;#34;All you need&amp;#34; is much different than working at layer 4. ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqswcw50kvagmg9y0yfpgnsa4p300gka0xt349wv6h4c2z86lafwdwcpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzpx3p26f9t59r48n4780zunyg8jd79etptzrly2ewea43syau6krazv38w5" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs0r95zhfn9q7aa9dpwxc20awph4znm9s4pd8nwwwnhnty6zn4jvlgpzamhxue69uhhyetvv9ujumn0wd68ytnzv9hxgtckvnt2k&#39;&gt;nevent1q…nt2k&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;&amp;#34;All you need&amp;#34; is much different than working at layer 4.  Logical is not the same as physical layers.
    </content>
    <updated>2025-11-03T11:42:48Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsz4p65sm37ugh3y5hyd6r22sdzj0683d96vapmxd27clcsmhmsj4qpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzpx3p26f9t59r48n4780zunyg8jd79etptzrly2ewea43syau6kra6rh2yu</id>
    
      <title type="html">I can tell that neither of you have understood my post.</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsz4p65sm37ugh3y5hyd6r22sdzj0683d96vapmxd27clcsmhmsj4qpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzpx3p26f9t59r48n4780zunyg8jd79etptzrly2ewea43syau6kra6rh2yu" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqswhsnnceqkzh8xdkk5whm0lrppempqnhjyrlgmwtrcadg3vhvf9hcppemhxue69uhkummn9ekx7mp0k5wntv&#39;&gt;nevent1q…wntv&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;I can tell that neither of you have understood my post.
    </content>
    <updated>2025-11-03T11:40:10Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs0r95zhfn9q7aa9dpwxc20awph4znm9s4pd8nwwwnhnty6zn4jvlgpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzpssmrfkdkfrue0vn3h93dv26f73c95q0l4a394wthtgh9gxdf5tsnqqsx7</id>
    
      <title type="html">NRTC (nostr identity &#43; transport) is very nascent at this point, ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs0r95zhfn9q7aa9dpwxc20awph4znm9s4pd8nwwwnhnty6zn4jvlgpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzpssmrfkdkfrue0vn3h93dv26f73c95q0l4a394wthtgh9gxdf5tsnqqsx7" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsf5hxkyt223d5aj2d7j289rjqk2ks3npee694p23c6weww3qe69eqpzpmhxue69uhkummnw3ezumt0d5hsz29848&#39;&gt;nevent1q…9848&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;NRTC (nostr identity &#43; transport) is very nascent at this point, also as Tim pointed out all you need is an nlub and kind 0 though i havent looked into WebId in detail.
    </content>
    <updated>2025-11-03T03:26:27Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqswhsnnceqkzh8xdkk5whm0lrppempqnhjyrlgmwtrcadg3vhvf9hcpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzqp4hsxwh78rl23eprqnxa4au4pu9mn4wp83kagay4an9cmgasvnujv74qh</id>
    
      <title type="html">I no longer need X.509, except for legacy infrastructure. A npub ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqswhsnnceqkzh8xdkk5whm0lrppempqnhjyrlgmwtrcadg3vhvf9hcpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzqp4hsxwh78rl23eprqnxa4au4pu9mn4wp83kagay4an9cmgasvnujv74qh" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqswcqhlrja2qfngg6et8z3c988z6u8azrsx6gmukfnnz2f3vvekflg30r9dh&#39;&gt;nevent1q…r9dh&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;I no longer need X.509, except for legacy infrastructure. A npub signed kind 0 event achieves the same effect.
    </content>
    <updated>2025-11-02T13:58:50Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqswcqhlrja2qfngg6et8z3c988z6u8azrsx6gmukfnnz2f3vvekflgpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzpx3p26f9t59r48n4780zunyg8jd79etptzrly2ewea43syau6krac6dak2</id>
    
      <title type="html">Using Tim&amp;#39;s language (roughly), a &amp;#34;sovereign ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqswcqhlrja2qfngg6et8z3c988z6u8azrsx6gmukfnnz2f3vvekflgpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzpx3p26f9t59r48n4780zunyg8jd79etptzrly2ewea43syau6krac6dak2" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsf5hxkyt223d5aj2d7j289rjqk2ks3npee694p23c6weww3qe69eqpzemhxue69uhhyetvv9ujuurjd9kkzmpwdejhgls9la2&#39;&gt;nevent1q…9la2&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Using Tim&amp;#39;s language (roughly), a &amp;#34;sovereign endpoint&amp;#34; would be a WSS with an X.509.  Unless you get the handshake/validation, no traffic can go across at that layer (4). You don&amp;#39;t have to emulate at layer 7. Note that multiple layers of delegation already exist with X.509, it is just that you can use your Nostr identity as root. You use the existing NIPs and relays to handle public conversation, including metadata needed to extend. A NIP could be defined to show your endpoint, which is just your super relay that has TLS. This can give you name resolution as well. How this related to my tangent, is that when you secure at layer 4, it is quite hard. You can run normal C libraries behind that. If you reach around your back to scratch your elbow, your application code that emulates 4 is vulnerable. &lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://web.archive.org/web/20181006211314/https://chovy.com/web-development/self-signed-certs-with-secure-websockets-in-node-js/&#34;&gt;https://web.archive.org/web/20181006211314/https://chovy.com/web-development/self-signed-certs-with-secure-websockets-in-node-js/&lt;/a&gt;
    </content>
    <updated>2025-11-02T13:47:32Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsf5hxkyt223d5aj2d7j289rjqk2ks3npee694p23c6weww3qe69eqpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzpx3p26f9t59r48n4780zunyg8jd79etptzrly2ewea43syau6kraffahwh</id>
    
      <title type="html">@npub1cgd…kfex , @npub1q6m…x7d5 As I was reading about Ubuntu ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsf5hxkyt223d5aj2d7j289rjqk2ks3npee694p23c6weww3qe69eqpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzpx3p26f9t59r48n4780zunyg8jd79etptzrly2ewea43syau6kraffahwh" />
    <content type="html">
      &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1cgd35mxmy37vhkfcmjckk9dylguz6q8l67cj6h9m45tj5rx569cql9kfex&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;ABH3PO&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1cgd…kfex&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; , &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1q6mcr8tlr3l4gus3sfnw6772s7zae6hqncmw5wj27ejud5wcxf7q0nx7d5&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Tim Bouma&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1q6m…x7d5&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;  As I was reading about Ubuntu going to Rust for core GNU utils, I was thinking about the reasons for this extra layer. It mostly comes down to security. (This is my own issue and reason for considering this post, and mostly a tangent.)  Where you two intersect is your interest in Nostr identity and transport. I haven&amp;#39;t seen the use of either of your projects. It seems like reaching around your back to scratch your elbow. If you are going to replace basic transport and name resolution, it should be lower on the stack in my mind, even if the end result is similar. One of you was involved with key delegation in a recent thread, too.  ANYWAY... I was thinking about Henry Story and his WebID stuff.  If you combined this with Nostr you could sign x.509 self-signed certs and stick the sig in the metadata. You&amp;#39;d get key delegation, sure, which gives you a possibility of middle tier features, but you&amp;#39;d also get a whole bunch of messaging infrastructure to interoperate with that will work with secure TLS.  Just some thoughts this morning... I can see that working.
    </content>
    <updated>2025-11-02T13:20:04Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsd4ck3gynzmrq4ds962ggampldx4f9l4djpekw9sy33duljvyy8sqpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzpx3p26f9t59r48n4780zunyg8jd79etptzrly2ewea43syau6krawt76nw</id>
    
      <title type="html">&amp;#34;perpetual LARP hackathon for web devs and angel VCs that ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsd4ck3gynzmrq4ds962ggampldx4f9l4djpekw9sy33duljvyy8sqpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzpx3p26f9t59r48n4780zunyg8jd79etptzrly2ewea43syau6krawt76nw" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsdsukmwc2a2tg03l90aj0uspahn46f2xk3h40na7h4cy9fff0rqmgpremhxue69uhkummnw3ez6ur4vgh8wetvd3hhyer9wghxuet59um7plqg&#39;&gt;nevent1q…plqg&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;&amp;#34;perpetual LARP hackathon for web devs and angel VCs that don&amp;#39;t know any better&amp;#34;&lt;br/&gt;ouch
    </content>
    <updated>2025-11-01T17:33:48Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs8em6wldrhwgjkw65lhstkwzvxrs6d432k3z4xyw3lgz5f4vwq5agpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzpx3p26f9t59r48n4780zunyg8jd79etptzrly2ewea43syau6kraepr4nq</id>
    
      <title type="html">WebID was my main pointer not DID. Henry Story&amp;#39;s work is ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs8em6wldrhwgjkw65lhstkwzvxrs6d432k3z4xyw3lgz5f4vwq5agpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzpx3p26f9t59r48n4780zunyg8jd79etptzrly2ewea43syau6kraepr4nq" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqspuv7y2rkrgwczzd4ygu63d42cquvehduxctlncy4d5x8z3uc788cppemhxue69uhkummn9ekx7mp0v7n4r9&#39;&gt;nevent1q…n4r9&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;WebID was my main pointer not DID. Henry Story&amp;#39;s work is often neglected on Nostr, even though he was an early adopter.  I brought up a compatible web server in 2012 and set up keys for all of my friends and family. It was a clusterfuck.  Nostr is much simpler, and NIP-07 works much cleaner vs. the x.509 method (but even in 2012, all major browsers would work). I mainly mentioned WebID because you asked for perspective and vocabulary of the times.&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://ozscience.com/interviews/henry-story-a-social-web-architect/&#34;&gt;https://ozscience.com/interviews/henry-story-a-social-web-architect/&lt;/a&gt;
    </content>
    <updated>2025-10-31T12:48:24Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqspuv7y2rkrgwczzd4ygu63d42cquvehduxctlncy4d5x8z3uc788cpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzqp4hsxwh78rl23eprqnxa4au4pu9mn4wp83kagay4an9cmgasvnucl3w7w</id>
    
      <title type="html">NIP-01 is the standard (with a few conventions). All the other ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqspuv7y2rkrgwczzd4ygu63d42cquvehduxctlncy4d5x8z3uc788cpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzqp4hsxwh78rl23eprqnxa4au4pu9mn4wp83kagay4an9cmgasvnucl3w7w" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs2lmhhj8n9vn0ragt5g7nv66x2m4c4ncy2xsa5sndl263sdy3zr2s37t59g&#39;&gt;nevent1q…t59g&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;NIP-01 is the standard (with a few conventions). All the other NIPs are conventions to build on. I am very familiar with W3C DIDs and realized a couple years ago that NIP-01 gave me all that I needed. Everything else was either opinion or convention. I can and am building whatever the f*** I want - the proof will be in the domain, not a dispensation from a committee.
    </content>
    <updated>2025-10-31T12:36:44Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsdaqeuk342m78g6eq4amrnmzjwcmcwfl84gpkuhxe9s7lqtqhrhjqpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzpx3p26f9t59r48n4780zunyg8jd79etptzrly2ewea43syau6krafsuw73</id>
    
      <title type="html">I wasn&amp;#39;t aware (or didn&amp;#39;t remember), but I see what you ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsdaqeuk342m78g6eq4amrnmzjwcmcwfl84gpkuhxe9s7lqtqhrhjqpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzpx3p26f9t59r48n4780zunyg8jd79etptzrly2ewea43syau6krafsuw73" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsdvluz0c8pk5lzw2mcsgzt9ykdef5463aspwvkm4zp452dd9vpy4spr9mhxue69uhhyetvv9ujuumwdae8gtnnda3kjctv9u8wtn4h&#39;&gt;nevent1q…tn4h&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;I wasn&amp;#39;t aware (or didn&amp;#39;t remember), but I see what you mean with a search and intersects.
    </content>
    <updated>2025-10-30T14:20:36Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsrgw9es6jpqpc4lndmqtskc5ma3nwl7h9zfcl88g5y3y0wnqyv0kcpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzqp4hsxwh78rl23eprqnxa4au4pu9mn4wp83kagay4an9cmgasvnur26dmd</id>
    
      <title type="html">I&amp;#39;ll add this to my reading list. Thx.</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsrgw9es6jpqpc4lndmqtskc5ma3nwl7h9zfcl88g5y3y0wnqyv0kcpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzqp4hsxwh78rl23eprqnxa4au4pu9mn4wp83kagay4an9cmgasvnur26dmd" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsygknscdvdd2h59h6axalzs4x7wj2pmpzl06czk89atnfqe6askkspzamhxue69uhhyetvv9ujuurjd9kkzmpwdejhgtcmfgwpl&#39;&gt;nevent1q…gwpl&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;I&amp;#39;ll add this to my reading list. Thx.
    </content>
    <updated>2025-10-30T14:07:53Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsfz3vrvle6gd2m5uekdscdrrffaqkh9cv7lgnkfuth7q3r2v8nm4gpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzpx3p26f9t59r48n4780zunyg8jd79etptzrly2ewea43syau6krav9cj8z</id>
    
      <title type="html">I like how hal is kind of like an unbiased party attendee... hey ...</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsfz3vrvle6gd2m5uekdscdrrffaqkh9cv7lgnkfuth7q3r2v8nm4gpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzpx3p26f9t59r48n4780zunyg8jd79etptzrly2ewea43syau6krav9cj8z" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsxnet2c99t4xzn4f02xpj67qqmgprj6azr9gd9u80ej7pj5qjkcagpzemhxue69uhks6tnwshxummnw3ezumrpdejz73v22j6&#39;&gt;nevent1q…22j6&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;I like how hal is kind of like an unbiased party attendee... hey hal, come over here (scrolls back the convo three minutes) what Nick just said, WTF is that?  (scrolls forward to present)... all good.  Hal added some background.  This is a decent application for LLMs.
    </content>
    <updated>2025-10-22T12:59:23Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqs9smuejp5vhjzgrdtpk9y6l2l8nh2fcmgarvt5yqapp6f8ln2hcqspfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzpg6tn8ezc7gvfcmt9v7zcddrdkcxyfhyr35jljpt3dt2c8z5p3daflfzcr</id>
    
      <title type="html">Test reply</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqs9smuejp5vhjzgrdtpk9y6l2l8nh2fcmgarvt5yqapp6f8ln2hcqspfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzpg6tn8ezc7gvfcmt9v7zcddrdkcxyfhyr35jljpt3dt2c8z5p3daflfzcr" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs0378s04m79cja2cul4rduncr72tsrz0j4fmstn9qc3wp2chy2vws05adyc&#39;&gt;nevent1q…adyc&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Test reply
    </content>
    <updated>2025-09-06T22:22:38Z</updated>
  </entry>

  <entry>
    <id>https://yabu.me/nevent1qqsdlxmy6305kja6vnxx37288k8mv4fj49ltkz8yffg00w7ny7k39dcpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzpslz866785q0rze0favgmrxmc4yxfzl8vx7ajzqjrpklgcpa0j4fjctygx</id>
    
      <title type="html">Yes exactly 😀</title>
    
    <link rel="alternate" href="https://yabu.me/nevent1qqsdlxmy6305kja6vnxx37288k8mv4fj49ltkz8yffg00w7ny7k39dcpfdmhxue69uhkuemfwshxgctwvdhkuamp09jx2a3wvdhk6tmwdaehgatj8fhxw6t59ejxzmnrdah8wctev3jhvtnrdakj7emv09cxsttkv4e8getc94skcurgvypzpslz866785q0rze0favgmrxmc4yxfzl8vx7ajzqjrpklgcpa0j4fjctygx" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsfzm47hedt58hag4p8mm3u8v5kqavnzle8zrc4halu56rdkaghztgyr554f&#39;&gt;nevent1q…554f&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Yes exactly 😀
    </content>
    <updated>2025-07-07T16:28:06Z</updated>
  </entry>

</feed>