<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <updated>2026-01-27T10:45:15Z</updated>
  <generator>https://nostr.ae</generator>

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


  <title>Nostr notes on haven.danconwaydev.com/yakihhone:haven.danconwaydev.com/inbox</title>
  <link href="https://nostr.ae/r/haven.danconwaydev.com/yakihhone:haven.danconwaydev.com/inbox" />
  <link rel="self" type="application/atom+xml" href="https://nostr.ae/r/haven.danconwaydev.com/yakihhone:haven.danconwaydev.com/inbox.rss" />
  <id>https://nostr.ae/r/haven.danconwaydev.com/yakihhone:haven.danconwaydev.com/inbox</id>
  <icon>https://pfp.nostr.build/437c14b92bc305f2d7bdfd2653757a13712fa83de21db44770bbe1e3ebec6bbc.jpg</icon>
  <logo>https://pfp.nostr.build/437c14b92bc305f2d7bdfd2653757a13712fa83de21db44770bbe1e3ebec6bbc.jpg</logo>



  <entry>
    <id>https://nostr.ae/nevent1qqsvqvwe09jngnmvsqntc27wy03t2neuattxurz8havp6kdtqckym5gpgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exsq72y3r</id>
    
      <title type="html">Yes your right. The output of those different phases should be ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsvqvwe09jngnmvsqntc27wy03t2neuattxurz8havp6kdtqckym5gpgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exsq72y3r" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsvmd2w5cqg3kwxxzedhc56cz2tygkjfkpwn7xjakurjlyg6kwm4jqpz4mhxue69uhhyetvv9ujuerpd46hxtnfduhs7nzs65&#39;&gt;nevent1q…zs65&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Yes your right. The output of those different phases should be consolidated so you just see the status per relay / git / grasp server.
    </content>
    <updated>2026-01-27T10:45:15Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsqfqcq5tv4dhtjdsaa857qj44kqtydwfk43qfylhdyffavc9lleacpgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exsukvt02</id>
    
      <title type="html">I totally agree. Unless you need dowload every file in a ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsqfqcq5tv4dhtjdsaa857qj44kqtydwfk43qfylhdyffavc9lleacpgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exsukvt02" />
    <content type="html">
      I totally agree. Unless you need dowload every file in a repository for some reason this is much better. It uses a fraction of the bandwidth and is really quick.&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;/nevent1qqsffep2450c3sr9fts8h2h5hv9j0qgzmqjjqaytteauz9uqvlw2sjqprfmhxue69uhhq7tjv9kkjepwve5kzar2v9nzucm0d5hsygpm7rrrljungc6q0tuh5hj7ue863q73qlheu4vywtzwhx42a7j9n5psgqqqqqqslwasgg&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;nevent1q…asgg&lt;/a&gt;&lt;/span&gt; &lt;/div&gt; If you&#39;re working on a JavaScript client for NIP-34/Grasp git repositories you should use &lt;a href=&#34;https://jsr.io/@fiatjaf/git-natural-api&#34;&gt;https://jsr.io/@fiatjaf/git-natural-api&lt;/a&gt; to fetch git data directly from the servers without having to clone the full repository.&lt;br/&gt;&lt;br/&gt;It also works with GitHub, GitLab and others together with &lt;a href=&#34;https://cors.isomorphic-git.org/&#34;&gt;https://cors.isomorphic-git.org/&lt;/a&gt; so you don&#39;t need to call proprietary APIs). &lt;/blockquote&gt;
    </content>
    <updated>2026-01-22T14:27:51Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsx7mlesazems733u7w26507aqd88xnnsxuy76cyz4lqhclj6j2udgpgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exslwxcku</id>
    
      <title type="html">I thought about doing this to make @nprofile…cd2e&amp;#39;s ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsx7mlesazems733u7w26507aqd88xnnsxuy76cyz4lqhclj6j2udgpgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exslwxcku" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsrvh5dlhhv2y2t5g6y0mrj83t9ydum43j0rcyqy63lmtjkju00f6cpz4mhxue69uhhyetvv9ujuerpd46hxtnfduhsuxvlnj&#39;&gt;nevent1q…vlnj&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;I thought about doing this to make &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nprofile1qqsprwdgjszdhucrfelp3p46nhzvd5mk7gu6zxp8r0fwc4n63zv9pnspz4mhxue69uhhyetvv9ujuerpd46hxtnfduhsz9mhwden5te0wfjkccte9ec8y6tdv9kzumn9wshszrnhwden5te0dehhxtnvdakz75qcd2e&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;justinmoon&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;nprofile…cd2e&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;&amp;#39;s favourite and &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nprofile1qqsrhuxx8l9ex335q7he0f09aej04zpazpl0ne2cgukyawd24mayt8gprfmhxue69uhhq7tjv9kkjepwve5kzar2v9nzucm0d5hszxmhwden5te0wfjkccte9emk2um5v4exucn5vvhxxmmd9us2xuyp&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;fiatjaf&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;nprofile…xuyp&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; &amp;#39;s least favourite client at the same time
    </content>
    <updated>2026-01-20T19:36:39Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsys82yrmv5wqd5j425y8gtvx0p6puexzfg6ywz23hueuj0f38y79gpgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exsft0vyp</id>
    
      <title type="html">With ngit, nostr events are synced to a db within the .git ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsys82yrmv5wqd5j425y8gtvx0p6puexzfg6ywz23hueuj0f38y79gpgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exsft0vyp" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs00nr9s6ps7y5e8pjj2txwl3vxh848jtgdw6g538zxef5874awcesppemhxue69uhkummn9ekx7mp00f5n36&#39;&gt;nevent1q…5n36&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;With ngit, nostr events are synced to a db within the .git directory. Also GRASP-05 enables archive servers that mirror repositories the operstor cares about. This enables repository data to always be publically available even if the services the maintainers choose go down.
    </content>
    <updated>2026-01-17T08:23:50Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsff9tz64gey4l6w98hx075v8vwpa83lj6ygf528pe7m353ec3az5cpgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exs70r8ne</id>
    
      <title type="html">Fantastic to see this coming together #nevent1q…lgfa</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsff9tz64gey4l6w98hx075v8vwpa83lj6ygf528pe7m353ec3az5cpgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exs70r8ne" />
    <content type="html">
      Fantastic to see this coming together&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;/nevent1qqs8ef2papa3f8r2sdmnsrllslfdrg2g24ztdhrjmav83upg5yklcxcpzfmhxue69uhkummnw3eryvfwvdhk6tczyrts65qfz5ztnyk3swyz9teyt40kkwskhqkez7kt0yjvaas76jkwuqcyqqqqqqgedlgfa&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;nevent1q…lgfa&lt;/a&gt;&lt;/span&gt; &lt;/div&gt; CICD pipelines in budabit.club with loom protocol. &lt;br/&gt;&lt;video controls width=&#34;100%&#34; class=&#34;max-h-[90vh] bg-neutral-300 dark:bg-zinc-700&#34;&gt;&lt;source src=&#34;https://video.nostr.build/1ce0ad821f523a50860486d37d0da2525161c20394d9f9c688a583b1a374d3ed.mp4&#34;&gt;&lt;/video&gt;&lt;br/&gt;&lt;br/&gt;In the future a cashu wallet will be built in so you can get change. &lt;br/&gt; &lt;/blockquote&gt;
    </content>
    <updated>2026-01-20T11:35:49Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsds70supeq28zaqy2w7c9dwa4xn5zpz0qg2ggpv97tglm3ed7ms8gpgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exspy4gzf</id>
    
      <title type="html">So your needs are: 1) basic Issue / PR flow with good review ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsds70supeq28zaqy2w7c9dwa4xn5zpz0qg2ggpv97tglm3ed7ms8gpgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exspy4gzf" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsgdstv29pg0kwudhg25c5zfg7h7uvx696xp3cyuzazkaahepewgagppemhxue69uhkummn9ekx7mp0hxwvv0&#39;&gt;nevent1q…wvv0&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;So your needs are: 1) basic Issue / PR flow with good review tooling 2) moderation tools 3) CI tooling? Have I missed anything?
    </content>
    <updated>2026-01-17T08:51:56Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsfxym3ckfnxx6awt943x8xhlt4c8qqjtls3z9xt7kzwvg9nztfksspgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exs7sltvy</id>
    
      <title type="html">As @nprofile…3zgd said you can use any git server you want or ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsfxym3ckfnxx6awt943x8xhlt4c8qqjtls3z9xt7kzwvg9nztfksspgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exs7sltvy" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs9t0uxv4t9dcpkmpxvswtzem7qeuw965657vz702qluumufkapzuqppemhxue69uhkummn9ekx7mp053a4h9&#39;&gt;nevent1q…a4h9&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;As &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nprofile1qqsdqnk0xw3s8fvc2t7mdq0d3dqjyqd6shvdyxv6a3eukcngr4324yqppemhxue69uhkummn9ekx7mp0qythwumn8ghj7un9d3shjtnswf5k6ctv9ehx2ap0qythwumn8ghj7cnfw33k76twv4ezuum0vd5kzmp0sv3zgd&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Five&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;nprofile…3zgd&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; said you can use any git server you want or host it yourself. Grasp is designed to enable users and projects to either self host, use grasp services offered by individuals or teams in their network or use public free or paid servers. The idea is thst projects use multiple grasp services at the same time whic sync up to provides reduncancy. Its also really simple for maintainers to switch service providers by updating a single event.
    </content>
    <updated>2026-01-16T21:37:12Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs9ptmagc2ntydz847eyv4ussurlkxg58v6rxjy2ts2233waz753kcpgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exsgq3smj</id>
    
      <title type="html">How&amp;#39;s the gnostr stuff going?</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs9ptmagc2ntydz847eyv4ussurlkxg58v6rxjy2ts2233waz753kcpgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exsgq3smj" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqswl8guh9wxe92n8hhshpuc0k27yyyazc0a93r6ak3h0240afu63ygpz4mhxue69uhhyetvv9ujuerpd46hxtnfduhs9ugqaf&#39;&gt;nevent1q…gqaf&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;How&amp;#39;s the gnostr stuff going?
    </content>
    <updated>2026-01-06T21:23:42Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqswdzvz78w7284dc9xsp3a0ympgpx374w4dn99dcl60k65s7tptgmqpgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exsxqptnx</id>
    
      <title type="html">quote from https://radicle.xyz/guides/seeder : &amp;#34;While a ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqswdzvz78w7284dc9xsp3a0ympgpx374w4dn99dcl60k65s7tptgmqpgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exsxqptnx" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsgshrqa6hwulp6xee6t34y7fft0v6jdgxsxnmn0f238zx23u5x76spz4mhxue69uhhyetvv9ujuerpd46hxtnfduhsf7lk0q&#39;&gt;nevent1q…lk0q&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;quote from &lt;a href=&#34;https://radicle.xyz/guides/seeder&#34;&gt;https://radicle.xyz/guides/seeder&lt;/a&gt; :&lt;br/&gt;&amp;#34;While a peer-to-peer network without seed nodes is feasible, it is impractical. This is because regular “user” nodes go online and offline all the time, so finding a user from which to download a certain piece of content can be challenging, or even impossible if all users with that content are offline. Therefore, a healthy peer-to-peer network necessitates at least some highly available nodes that participate in the network like regular peers, but seldom go offline. These are called seed nodes.&amp;#34;
    </content>
    <updated>2026-01-16T21:23:15Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsgshrqa6hwulp6xee6t34y7fft0v6jdgxsxnmn0f238zx23u5x76spgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exsph984e</id>
    
      <title type="html">last time i checked in on the project it mainly worked through ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsgshrqa6hwulp6xee6t34y7fft0v6jdgxsxnmn0f238zx23u5x76spgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exsph984e" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsgyc03nvpfjwxw5t4d2suj6nwr5uhv7wzdy0hqax4gqdh9wz5gtdqppemhxue69uhkummn9ekx7mp02vdh0h&#39;&gt;nevent1q…dh0h&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;last time i checked in on the project it mainly worked through &amp;#39;seed&amp;#39; nodes which are analogus to relays because p2p was proving so unreliable. I&amp;#39;m not sure how much more decentralised it is in reality.
    </content>
    <updated>2026-01-16T21:22:06Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsthqfl2pa0n0rep8rjcvxkf6mwug62x3y5zrz8ykadnc4wdqqgh8qpgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exs0ff8c0</id>
    
      <title type="html">Hi @npub185h…wrdp, I&amp;#39;m the creator of gitworkshop, gnit and ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsthqfl2pa0n0rep8rjcvxkf6mwug62x3y5zrz8ykadnc4wdqqgh8qpgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exs0ff8c0" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsw8vl9hsjr6udt98d6p9vkcs7rgu9ncrwnd93q2fyll9wqfeqyv0sppemhxue69uhkummn9ekx7mp0f7g82q&#39;&gt;nevent1q…g82q&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Hi &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub185h9z5yxn8uc7retm0n6gkm88358lejzparxms5kmy9epr236k2qcswrdp&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;matt&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub185h…wrdp&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;, I&amp;#39;m the creator of gitworkshop, gnit and grasp. A combination of relay an client tools can provide the provide this sort of moderation and control for projects that desire it, but the maturity of git nostr isn&amp;#39;t really there yet. Whilst the majority of a project community would likely use these tools that support this moderation, the conversation can spill over into the wider nostr ecosystem and clients built / used that don&amp;#39;t enforce this moderation. This is the trade-off using an open protocol thats easy to build on.
    </content>
    <updated>2026-01-16T21:18:29Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsfse7p2ye5ndjx629ar6h30ur7pukvj9nzjsntavs4q2yv6xtjdvspgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exs3jg55e</id>
    
      <title type="html">Whilst smaller project often don&amp;#39;t require advanced git ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsfse7p2ye5ndjx629ar6h30ur7pukvj9nzjsntavs4q2yv6xtjdvspgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exs3jg55e" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsvp232k8w7zwwp4z4mh3l9t7xye5n0y8frrzf4jet4w2g2ghfpwzspyfmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf0d9hxymmctmv7hs&#39;&gt;nevent1q…v7hs&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Whilst smaller project often don&amp;#39;t require advanced git features such as shallow clones and no-blob, they are essential for my larger open source projects. My goal is to make git nostr so attractive for open source projects that they all want to use it, no matter their size or complex. 
    </content>
    <updated>2025-12-27T12:05:10Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsvfy3p6v9swkpa6w0jefsy02f8wm37fel2z8jz9gjkw8v28al8vtcpgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exsmxdsvr</id>
    
      <title type="html">In my proposal there are multiple packs relating to groups of ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsvfy3p6v9swkpa6w0jefsy02f8wm37fel2z8jz9gjkw8v28al8vtcpgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exsmxdsvr" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsxuwa49hmuu5777rucznrsj42j8xv9evfp5dp7v8upuu53w565p0gppemhxue69uhkummn9ekx7mp0dej3hz&#39;&gt;nevent1q…j3hz&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;In my proposal there are multiple packs relating to groups of commits in the history so the hashes don&amp;#39;t change. Uding ^2 exponential.
    </content>
    <updated>2025-12-27T12:51:37Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsvp232k8w7zwwp4z4mh3l9t7xye5n0y8frrzf4jet4w2g2ghfpwzspgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exssnl39k</id>
    
      <title type="html">Ultimately I prefer the trade-off of using a git server as its ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsvp232k8w7zwwp4z4mh3l9t7xye5n0y8frrzf4jet4w2g2ghfpwzspgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exssnl39k" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs0pt2xvjm3639h7hgfl7yyqjc39swksq6xk4fkes8kzg636jjj6pgpyfmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf0d9hxymmctqaeav&#39;&gt;nevent1q…aeav&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Ultimately I prefer the trade-off of using a git server as its fundimantally compatible with all git usages (shallow sync, no-blob, etc) and git tooling. Grasp enable using the battle-tested, flexible and widely used git client-server model but frees it from a single server and moves the trust and authentication onto nostr. My guiding principle has been: let git be git and let nostr be nostr.
    </content>
    <updated>2025-12-27T11:57:53Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs0pt2xvjm3639h7hgfl7yyqjc39swksq6xk4fkes8kzg636jjj6pgpgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exsfjc73z</id>
    
      <title type="html">@nprofile…ptz7 I considered using blossom, in fact I even wrote ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs0pt2xvjm3639h7hgfl7yyqjc39swksq6xk4fkes8kzg636jjj6pgpgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exsfjc73z" />
    <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;Martti Malmi&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://nostr.ae/nevent1qqs2e8p7xj00xkevu9vjxfvg3qc20qw6l20raaa4zhrj0ervkp9dhsspgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exsprshd3</id>
    
      <title type="html">O. I thought that meant that it is online now but some sort of ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs2e8p7xj00xkevu9vjxfvg3qc20qw6l20raaa4zhrj0ervkp9dhsspgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exsprshd3" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsyaaxg4kdc8f4rzd493fxwa4wrfevcvk3casmyedrz3zwdgtwz6kspz4mhxue69uhhyetvv9ujuerpd46hxtnfduhsffd506&#39;&gt;nevent1q…d506&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;O. I thought that meant that it is online now but some sort of source fallback may not be yet. What exactly is online now?
    </content>
    <updated>2025-12-23T15:07:57Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqswdqu3fmvpmruxh7dy9wa2qldhvye8m49putufd8cq2pxy29xqhpspgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exssgzhnz</id>
    
      <title type="html">I&amp;#39;m not seeing that comment.</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqswdqu3fmvpmruxh7dy9wa2qldhvye8m49putufd8cq2pxy29xqhpspgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exssgzhnz" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs030ghc0reu07x5gqcdfgj6r29jmrrkp7f7rsmmfejac9d9c9vnjqpz4mhxue69uhhyetvv9ujuerpd46hxtnfduhs5zc2kp&#39;&gt;nevent1q…c2kp&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;I&amp;#39;m not seeing that comment.
    </content>
    <updated>2025-12-23T13:53:53Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsxe68yawl4j89g9hase23svrwwfjssfwen9u3ngdvpmm0fl33ay0spgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exss2mrsl</id>
    
      <title type="html">This is because a git repository can&amp;#39;t be found at the ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsxe68yawl4j89g9hase23svrwwfjssfwen9u3ngdvpmm0fl33ay0spgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exss2mrsl" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs2028gtl04xdtc356gxrjut92egcyp8xg54tt74jh33xcqnu9hj9cpzfmhxue69uhkummnw3eryvfwvdhk6tccynwee&#39;&gt;nevent1q…nwee&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;This is because a git repository can&amp;#39;t be found at the git.gitter.space address listed in the announcement. &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nprofile1qqsf4qmhne6ssp2kcetdf4qc6q4y6lkmu2y2970xm545s7v7ey63snqpz9mhxue69uhkymmnw3ezuumgdacz7qg4waehxw309aex2mrp0yhxgctdw4eju6t09uqsuamnwvaz7tmwdaejumr0dshs7tcy97&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;arbadacarba&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;nprofile…cy97&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;?
    </content>
    <updated>2025-12-23T10:50:46Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs0efh8j9qz2hdwe9y95elrglh6rcvnurfglfk49u85gp4prwlmx2cpgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exsx6flhz</id>
    
      <title type="html">How was the process?</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs0efh8j9qz2hdwe9y95elrglh6rcvnurfglfk49u85gp4prwlmx2cpgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exsx6flhz" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsfhzs2v0w9lznzt2pftj00sd4vj9fv8z4fnnvyu2k4kujgurt0l4spzamhxue69uhkvun9deejumn0wd68yvfwvdhk6tccd394u&#39;&gt;nevent1q…394u&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;How was the process?
    </content>
    <updated>2025-12-22T21:49:46Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqstcq9r952gucppydtm22r54xanfdnmf5guc5vpvdjjmatwlhzzg0gpgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exsujp7af</id>
    
      <title type="html">Let every client be a git nostr client #nevent1q…s9j2</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqstcq9r952gucppydtm22r54xanfdnmf5guc5vpvdjjmatwlhzzg0gpgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exsujp7af" />
    <content type="html">
      Let every client be a git nostr client&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;/nevent1qqs98meeqekrksscl699hxq9qgz5syw7g6j9pw3xf2xlv4ezazrdphqprdmhxue69uhhg6r9vehhyetnwshxummnw3erztnrdakj7q3q07jk7htfv243u0x5ynn43scq9wrxtaasmrwwa8lfu2ydwag6cx2qxpqqqqqqzjms9j2&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;nevent1q…s9j2&lt;/a&gt;&lt;/span&gt; &lt;/div&gt; reviewing a patch from &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub15qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exs5cyejr&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;DanConwayDev&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub15qy…yejr&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; to #grimoire in itself&lt;br/&gt;&lt;br/&gt;&lt;video controls width=&#34;100%&#34; class=&#34;max-h-[90vh] bg-neutral-300 dark:bg-zinc-700&#34;&gt;&lt;source src=&#34;https://video.nostr.build/d6362a90d8b4d4d3d1ac47c59eee6e5e3c0676a6bb81a3d480d608fa217e644a.mp4&#34;&gt;&lt;/video&gt; &lt;/blockquote&gt;
    </content>
    <updated>2025-12-22T21:49:06Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsznmhhremrkydae020nm4z4y0ffwuqtg7k0y4uwvvutqd7r9pcnvqpgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exshrgnms</id>
    
      <title type="html">ask and you shall receive #nevent1q…ryvq</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsznmhhremrkydae020nm4z4y0ffwuqtg7k0y4uwvvutqd7r9pcnvqpgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exshrgnms" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsvujxjstvew22h9466pgc4qzak2e0xra59l9epjpsz9txmuu2m5zsprfmhxue69uhhq7tjv9kkjepwve5kzar2v9nzucm0d5hs7azrgz&#39;&gt;nevent1q…zrgz&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;ask and you shall receive&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;/nevent1qvzqqqqx2ypzpgqgmmc409hm4xsdd74sf68a2uyf9pwel4g9mfdg8l5244t6x4jdqqsx3f2v2fmfquj4y0uatqklagc3chfl2djkt3t32jpelaarqp0dxyq0kryvq&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;nevent1q…ryvq&lt;/a&gt;&lt;/span&gt; &lt;/div&gt; From 6853a2f7c9128fc9c111db7a80021b345c151104 Mon Sep 17 00:00:00 2001&lt;br/&gt;From: DanConwayDev &lt;DanConwayDev@protonmail.com&gt;&lt;br/&gt;Date: Mon, 22 Dec 2025 20:58:58 &#43;0000&lt;br/&gt;Subject: [PATCH] feat: add NIP-34 user grasp list rendering&lt;br/&gt;&lt;br/&gt;because you wanted to know what it feels like:&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;/nevent1qvzqqqqqqypzqla9dawkjc4trc7dgf88trpsq2uxvhmmpkxua607nc5g6a634sv5qyd8wumn8ghj7urewfsk66ty9enxjct5dfskvtnrdakj7qgmwaehxw309a6xsetxdaex2um59ehx7um5wgcjucm0d5hsqgxwfrfg9kvh99tj6adq5v2spwm9vhnp76zljuseqcpz4nd7w9d6pg000a03&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;nevent1q…0a03&lt;/a&gt;&lt;/span&gt;&lt;br/&gt;---&lt;br/&gt; src/components/nostr/kinds/GraspListDetailRenderer.tsx | 34 &#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/components/nostr/kinds/GraspListRenderer.tsx       | 39 &#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/components/nostr/kinds/index.tsx                   |  4 &#43;&#43;&#43;&#43;&lt;br/&gt; src/constants/kinds.ts                                 |  7 &#43;&#43;&#43;&#43;&#43;&#43;&#43;&lt;br/&gt; src/data/nostr-kinds-schema.yaml                       | 11 &#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&lt;br/&gt; 5 files changed, 95 insertions(&#43;)&lt;br/&gt; create mode 100644 src/components/nostr/kinds/GraspListDetailRenderer.tsx&lt;br/&gt; create mode 100644 src/components/nostr/kinds/GraspListRenderer.tsx&lt;br/&gt;&lt;br/&gt;diff --git a/src/components/nostr/kinds/GraspListDetailRenderer.tsx b/src/components/nostr/kinds/GraspListDetailRenderer.tsx&lt;br/&gt;new file mode 100644&lt;br/&gt;index 0000000..b3c9475&lt;br/&gt;--- /dev/null&lt;br/&gt;&#43;&#43;&#43; b/src/components/nostr/kinds/GraspListDetailRenderer.tsx&lt;br/&gt;@@ -0,0 &#43;1,34 @@&lt;br/&gt;&#43;import { NostrEvent } from &#34;@/types/nostr&#34;;&lt;br/&gt;&#43;import { RelayLink } from &#34;../RelayLink&#34;;&lt;br/&gt;&#43;&lt;br/&gt;&#43;/**&lt;br/&gt;&#43; * Kind 10317 Detail Renderer - User Grasp List (Detail View)&lt;br/&gt;&#43; * Shows full list of grasp service relays&lt;br/&gt;&#43; */&lt;br/&gt;&#43;export function Kind10317DetailRenderer({ event }: { event: NostrEvent }) {&lt;br/&gt;&#43;  // Extract grasp relay URLs from g tags&lt;br/&gt;&#43;  const graspRelays = event.tags&lt;br/&gt;&#43;    .filter((tag) =&gt; tag[0] === &#34;g&#34; &amp;&amp; tag[1])&lt;br/&gt;&#43;    .map((tag) =&gt; tag[1]);&lt;br/&gt;&#43;&lt;br/&gt;&#43;  if (graspRelays.length === 0) {&lt;br/&gt;&#43;    return (&lt;br/&gt;&#43;      &lt;div className=&#34;p-4 text-center text-muted-foreground text-sm&#34;&gt;&lt;br/&gt;&#43;        No grasp relays configured&lt;br/&gt;&#43;      &lt;/div&gt;&lt;br/&gt;&#43;    );&lt;br/&gt;&#43;  }&lt;br/&gt;&#43;&lt;br/&gt;&#43;  return (&lt;br/&gt;&#43;    &lt;div className=&#34;flex flex-col gap-2 p-4&#34;&gt;&lt;br/&gt;&#43;      {graspRelays.map((url, index) =&gt; (&lt;br/&gt;&#43;        &lt;RelayLink&lt;br/&gt;&#43;          key={`${url}-${index}`}&lt;br/&gt;&#43;          url={url}&lt;br/&gt;&#43;          urlClassname=&#34;text-md underline decoration-dotted&#34;&lt;br/&gt;&#43;          iconClassname=&#34;size-4&#34;&lt;br/&gt;&#43;        /&gt;&lt;br/&gt;&#43;      ))}&lt;br/&gt;&#43;    &lt;/div&gt;&lt;br/&gt;&#43;  );&lt;br/&gt;&#43;}&lt;br/&gt;diff --git a/src/components/nostr/kinds/GraspListRenderer.tsx b/src/components/nostr/kinds/GraspListRenderer.tsx&lt;br/&gt;new file mode 100644&lt;br/&gt;index 0000000..ff1b2b8&lt;br/&gt;--- /dev/null&lt;br/&gt;&#43;&#43;&#43; b/src/components/nostr/kinds/GraspListRenderer.tsx&lt;br/&gt;@@ -0,0 &#43;1,39 @@&lt;br/&gt;&#43;import { BaseEventProps, BaseEventContainer } from &#34;./BaseEventRenderer&#34;;&lt;br/&gt;&#43;import { RelayLink } from &#34;../RelayLink&#34;;&lt;br/&gt;&#43;&lt;br/&gt;&#43;/**&lt;br/&gt;&#43; * Kind 10317 Renderer - User Grasp List (Feed View)&lt;br/&gt;&#43; * Shows list of grasp service relays&lt;br/&gt;&#43; */&lt;br/&gt;&#43;export function Kind10317Renderer({ event }: BaseEventProps) {&lt;br/&gt;&#43;  // Extract grasp relay URLs from g tags&lt;br/&gt;&#43;  const graspRelays = event.tags&lt;br/&gt;&#43;    .filter((tag) =&gt; tag[0] === &#34;g&#34; &amp;&amp; tag[1])&lt;br/&gt;&#43;    .map((tag) =&gt; tag[1]);&lt;br/&gt;&#43;&lt;br/&gt;&#43;  if (graspRelays.length === 0) {&lt;br/&gt;&#43;    return (&lt;br/&gt;&#43;      &lt;BaseEventContainer event={event}&gt;&lt;br/&gt;&#43;        &lt;div className=&#34;text-xs text-muted-foreground italic&#34;&gt;&lt;br/&gt;&#43;          No grasp relays configured&lt;br/&gt;&#43;        &lt;/div&gt;&lt;br/&gt;&#43;      &lt;/BaseEventContainer&gt;&lt;br/&gt;&#43;    );&lt;br/&gt;&#43;  }&lt;br/&gt;&#43;&lt;br/&gt;&#43;  return (&lt;br/&gt;&#43;    &lt;BaseEventContainer event={event}&gt;&lt;br/&gt;&#43;      &lt;div className=&#34;flex flex-col gap-0.5&#34;&gt;&lt;br/&gt;&#43;        {graspRelays.map((url, index) =&gt; (&lt;br/&gt;&#43;          &lt;RelayLink&lt;br/&gt;&#43;            key={`${url}-${index}`}&lt;br/&gt;&#43;            url={url}&lt;br/&gt;&#43;            className=&#34;py-0.5 hover:bg-none&#34;&lt;br/&gt;&#43;            iconClassname=&#34;size-4&#34;&lt;br/&gt;&#43;            urlClassname=&#34;underline decoration-dotted&#34;&lt;br/&gt;&#43;          /&gt;&lt;br/&gt;&#43;        ))}&lt;br/&gt;&#43;      &lt;/div&gt;&lt;br/&gt;&#43;    &lt;/BaseEventContainer&gt;&lt;br/&gt;&#43;  );&lt;br/&gt;&#43;}&lt;br/&gt;diff --git a/src/components/nostr/kinds/index.tsx b/src/components/nostr/kinds/index.tsx&lt;br/&gt;index b251e88..989d4de 100644&lt;br/&gt;--- a/src/components/nostr/kinds/index.tsx&lt;br/&gt;&#43;&#43;&#43; b/src/components/nostr/kinds/index.tsx&lt;br/&gt;@@ -25,6 &#43;25,8 @@ import { Kind9802Renderer } from &#34;./HighlightRenderer&#34;;&lt;br/&gt; import { Kind9802DetailRenderer } from &#34;./HighlightDetailRenderer&#34;;&lt;br/&gt; import { Kind10002Renderer } from &#34;./RelayListRenderer&#34;;&lt;br/&gt; import { Kind10002DetailRenderer } from &#34;./RelayListDetailRenderer&#34;;&lt;br/&gt;&#43;import { Kind10317Renderer } from &#34;./GraspListRenderer&#34;;&lt;br/&gt;&#43;import { Kind10317DetailRenderer } from &#34;./GraspListDetailRenderer&#34;;&lt;br/&gt; import { Kind30023Renderer } from &#34;./ArticleRenderer&#34;;&lt;br/&gt; import { Kind30023DetailRenderer } from &#34;./ArticleDetailRenderer&#34;;&lt;br/&gt; import { CommunityNIPRenderer } from &#34;./CommunityNIPRenderer&#34;;&lt;br/&gt;@@ -74,6 &#43;76,7 @@ const kindRenderers: Record&lt;number, React.ComponentType&lt;BaseEventProps&gt;&gt; = {&lt;br/&gt;   9802: Kind9802Renderer, // Highlight&lt;br/&gt;   777: SpellRenderer, // Spell (Grimoire)&lt;br/&gt;   10002: Kind10002Renderer, // Relay List Metadata (NIP-65)&lt;br/&gt;&#43;  10317: Kind10317Renderer, // User Grasp List (NIP-34)&lt;br/&gt;   10006: GenericRelayListRenderer, // Blocked Relays (NIP-51)&lt;br/&gt;   10007: GenericRelayListRenderer, // Search Relays (NIP-51)&lt;br/&gt;   10012: GenericRelayListRenderer, // Favorite Relays (NIP-51)&lt;br/&gt;@@ -137,6 &#43;140,7 @@ const detailRenderers: Record&lt;&lt;br/&gt;   1621: IssueDetailRenderer, // Issue Detail (NIP-34)&lt;br/&gt;   9802: Kind9802DetailRenderer, // Highlight Detail&lt;br/&gt;   10002: Kind10002DetailRenderer, // Relay List Detail (NIP-65)&lt;br/&gt;&#43;  10317: Kind10317DetailRenderer, // User Grasp List Detail (NIP-34)&lt;br/&gt;   777: SpellDetailRenderer, // Spell Detail&lt;br/&gt;   30023: Kind30023DetailRenderer, // Long-form Article Detail&lt;br/&gt;   30311: LiveActivityDetailRenderer, // Live Streaming Event Detail (NIP-53)&lt;br/&gt;diff --git a/src/constants/kinds.ts b/src/constants/kinds.ts&lt;br/&gt;index 6d51b1f..284595a 100644&lt;br/&gt;--- a/src/constants/kinds.ts&lt;br/&gt;&#43;&#43;&#43; b/src/constants/kinds.ts&lt;br/&gt;@@ -847,6 &#43;847,13 @@ export const EVENT_KINDS: Record&lt;number | string, EventKind&gt; = {&lt;br/&gt;     nip: &#34;66&#34;,&lt;br/&gt;     icon: Activity,&lt;br/&gt;   },&lt;br/&gt;&#43;  10317: {&lt;br/&gt;&#43;    kind: 10317,&lt;br/&gt;&#43;    name: &#34;Grasp List&#34;,&lt;br/&gt;&#43;    description: &#34;User grasp list&#34;,&lt;br/&gt;&#43;    nip: &#34;34&#34;,&lt;br/&gt;&#43;    icon: FolderGit2,&lt;br/&gt;&#43;  },&lt;br/&gt;   // 10312: {&lt;br/&gt;   //   kind: 10312,&lt;br/&gt;   //   name: &#34;Room Presence&#34;,&lt;br/&gt;diff --git a/src/data/nostr-kinds-schema.yaml b/src/data/nostr-kinds-schema.yaml&lt;br/&gt;index 7f172c2..fb10587 100644&lt;br/&gt;--- a/src/data/nostr-kinds-schema.yaml&lt;br/&gt;&#43;&#43;&#43; b/src/data/nostr-kinds-schema.yaml&lt;br/&gt;@@ -1318,6 &#43;1318,17 @@ kinds:&lt;br/&gt;       type: empty&lt;br/&gt;     tags: []&lt;br/&gt; &lt;br/&gt;&#43;  10317:&lt;br/&gt;&#43;    description: User grasp list&lt;br/&gt;&#43;    content:&lt;br/&gt;&#43;      type: empty&lt;br/&gt;&#43;    tags:&lt;br/&gt;&#43;      -&lt;br/&gt;&#43;        name: g&lt;br/&gt;&#43;        next:&lt;br/&gt;&#43;          type: relay&lt;br/&gt;&#43;          required: true&lt;br/&gt;&#43;&lt;br/&gt;   10377:&lt;br/&gt;     description: Proxy Announcement&lt;br/&gt;     content:&lt;br/&gt;--&lt;br/&gt;libgit2 1.9.1&lt;br/&gt;&lt;br/&gt; &lt;/blockquote&gt;
    </content>
    <updated>2025-12-22T21:01:15Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsx9f54t8rmf8uqfzgpqn6a4xv8nr2th5zujerv674zhfnzn8mn54qpgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exsqmnlau</id>
    
      <title type="html">Most of the time when paying online, banking app authorisation is ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsx9f54t8rmf8uqfzgpqn6a4xv8nr2th5zujerv674zhfnzn8mn54qpgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exsqmnlau" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqspl2muwaqfcfacryc8a3s69aea4d6s3m8pp4xzk78juhy2kp8lfyspz9mhxue69uhkummnw3ezumrpdejz7h46r5f&#39;&gt;nevent1q…6r5f&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Most of the time when paying online, banking app authorisation is part of the payment flow. Never irl. Probably using a VPN and a privacy email address increases the likelihood of this extra step being required.
    </content>
    <updated>2025-12-21T09:16:39Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsg92s0k7pnvut6pdhw7dsm5mvypultxym0spe5wdt3439f8fupu5spgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exs2gq8g3</id>
    
      <title type="html">I needed to hear that. Thanks.</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsg92s0k7pnvut6pdhw7dsm5mvypultxym0spe5wdt3439f8fupu5spgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exs2gq8g3" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsxlek7fguuf6jm5qu6wasqhlj6u5pjarpl5netqc5w9dswm5jfmvqpz4mhxue69uhhyetvv9ujuerpd46hxtnfduhsy3pjdt&#39;&gt;nevent1q…pjdt&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;I needed to hear that. Thanks.
    </content>
    <updated>2025-12-18T21:08:33Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs2rdjwk9l9a8n0kpqmurw6hwk7p6w0lpc0de3kh5n9hyetaxprewcpgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exsve979w</id>
    
      <title type="html">Some features, such as card payment authorisation, aren&amp;#39;t ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs2rdjwk9l9a8n0kpqmurw6hwk7p6w0lpc0de3kh5n9hyetaxprewcpgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exsve979w" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs2wwazxt5z5kzesxrxcn7qpys7jacf3w0jzj75knel54sqqne27jcpz9mhxue69uhkummnw3ezumrpdejz76l265s&#39;&gt;nevent1q…265s&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Some features, such as card payment authorisation, aren&amp;#39;t available through the web.
    </content>
    <updated>2025-12-19T16:51:32Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqspqxc95j29dkd7d9ajzfj2xpp8d6qrqe73r94n53c7z9yhkpsmlugpgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exsmflgmq</id>
    
      <title type="html">Gitworksho.dev is good for managing the issues but you can also ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqspqxc95j29dkd7d9ajzfj2xpp8d6qrqe73r94n53c7z9yhkpsmlugpgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exsmflgmq" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqspdl0e9d2z7xxudkha57k0wzdezyqcpy2j4dkrklt9d957j8703mgpz4mhxue69uhhyetvv9ujuerpd46hxtnfduhs2ledn9&#39;&gt;nevent1q…edn9&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Gitworksho.dev is good for managing the issues but you can also create the issues straight from your app. Many clients support notifications for the discussion thread.
    </content>
    <updated>2025-12-19T14:49:11Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqszcp6tr7scrhur22qg9ddd5dhufh22lyn98aaef5lc39v30lns2zspgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exsndf34g</id>
    
      <title type="html">Definitely. We could iterate really quickly with a combination of ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqszcp6tr7scrhur22qg9ddd5dhufh22lyn98aaef5lc39v30lns2zspgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exsndf34g" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsqlaq2spg4xd5sperkyk4q9pwjshq7n6wvqt2whnwxa58cwatrglgpz4mhxue69uhhyetvv9ujuerpd46hxtnfduhshjwn44&#39;&gt;nevent1q…wn44&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Definitely. We could iterate really quickly with a combination of reports (1984), WoT based metrics, relay based filtering and client side mantainer and user tools.
    </content>
    <updated>2025-12-18T19:30:02Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqswk4tnx4cs3pjp428crvp4cf4qap86hyldmhva0ltwxc2ggydgz7cpgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exs2hf5t4</id>
    
      <title type="html">This is a good thought. Right now I feel we are too experimental ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqswk4tnx4cs3pjp428crvp4cf4qap86hyldmhva0ltwxc2ggydgz7cpgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exs2hf5t4" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs2kpn0fc8z9n7325naru3tddlr0aj8r0m6eqf5yzeecelc8frkgnspzamhxue69uhhyetvv9ujuurjd9kkzmpwdejhgtctw3fdp&#39;&gt;nevent1q…3fdp&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;This is a good thought. Right now I feel we are too experimental and it would be counter productive to have a large influx of users with viral marketing.
    </content>
    <updated>2025-12-18T16:59:30Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsrd7lf35es2k76pqk8kck636g7splu053jzzq0st4yzl5rfszusvqpgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exsxphy9v</id>
    
      <title type="html">Are you sending a nostr DM from a system account for every one of ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsrd7lf35es2k76pqk8kck636g7splu053jzzq0st4yzl5rfszusvqpgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exsxphy9v" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqszh5c38j62c8saqk9e9tf3hthfpjkqshxav7gmfe644k8jdj8pz3qppemhxue69uhkummn9ekx7mp0jgxpnk&#39;&gt;nevent1q…xpnk&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Are you sending a nostr DM from a system account for every one of these notifications?This feels a like an anti-pattern. Wouldn&amp;#39;t it be better to show them as notifications in the gittr UI. Many clients show git related content in there notifications normally and as we grow #GitViaNostr maybe more will.
    </content>
    <updated>2025-12-17T16:16:53Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsfmwcl8n9p7lltmwaxhutm24dmhylsqp2468rsftyvypgmh379ltgpgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exsmf6ew9</id>
    
      <title type="html">@nprofile…cy97 we should have a call sometime to discuss ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsfmwcl8n9p7lltmwaxhutm24dmhylsqp2468rsftyvypgmh379ltgpgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exsmf6ew9" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsrd7lf35es2k76pqk8kck636g7splu053jzzq0st4yzl5rfszusvqpz4mhxue69uhhyetvv9ujuerpd46hxtnfduhsv8y8nc&#39;&gt;nevent1q…y8nc&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;/nprofile1qqsf4qmhne6ssp2kcetdf4qc6q4y6lkmu2y2970xm545s7v7ey63snqpz9mhxue69uhkymmnw3ezuumgdacz7qg4waehxw309aex2mrp0yhxgctdw4eju6t09uqsuamnwvaz7tmwdaejumr0dshs7tcy97&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;arbadacarba&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;nprofile…cy97&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; we should have a call sometime to discuss compatible. Would you be up for that? I reached out the other day on telegram.
    </content>
    <updated>2025-12-17T16:27:20Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs2jcwmc90nscyu88ks0ccvx4hd5xjxn95vfsajnaqnvwllsjpj9fqpgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exslffx5t</id>
    
      <title type="html">Yes, I&amp;#39;ll add it with a left-pad protection scheme.</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs2jcwmc90nscyu88ks0ccvx4hd5xjxn95vfsajnaqnvwllsjpj9fqpgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exslffx5t" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsgwjazlaqw7vs8rm96kzjxzcryankqzrscwu4y4l37zhf07a2gx7cprfmhxue69uhhq7tjv9kkjepwve5kzar2v9nzucm0d5hscn59m7&#39;&gt;nevent1q…59m7&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Yes, I&amp;#39;ll add it with a left-pad protection scheme.
    </content>
    <updated>2025-12-15T20:13:06Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsf5tde4v84u60mkfw9hfmyqa7242uafm90xys9qdjv0sy3lm9dp4spgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exszcwpqd</id>
    
      <title type="html">No not yet. https://gitworkshop.dev/notifications is a good place ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsf5tde4v84u60mkfw9hfmyqa7242uafm90xys9qdjv0sy3lm9dp4spgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exszcwpqd" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsz73wjldhwx0lymsr3kjt3ghrxpmymvgk7vj92zzh2rtrf2uqclhqpzamhxue69uhhyetvv9ujumn0wd68ytnzv9hxgtc43kcz7&#39;&gt;nevent1q…kcz7&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;No not yet. &lt;a href=&#34;https://gitworkshop.dev/notifications&#34;&gt;https://gitworkshop.dev/notifications&lt;/a&gt; is a good place to see notifications for #gitvianostr
    </content>
    <updated>2025-12-17T16:09:19Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs07xuee6fk76ldqzvj7r3z6nwd0dnuyguzrytveatvdffp45yl74cpgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exsjvlv4a</id>
    
      <title type="html">I cannot replicate this on 145.0. vnext.gitworkshop.dev is now at ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs07xuee6fk76ldqzvj7r3z6nwd0dnuyguzrytveatvdffp45yl74cpgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exsjvlv4a" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsfx8l8xtqegmpg4a7tzh8akysqc39h4vp25fdckf9xl0gektgmj2gpz4mhxue69uhhyetvv9ujuerpd46hxtnfduhsuralag&#39;&gt;nevent1q…alag&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;I cannot replicate this on 145.0. vnext.gitworkshop.dev is now at the exact same state as gitworkshop.dev. does it now have the same behaviour? does a fresh profile fix it?
    </content>
    <updated>2025-12-09T14:25:18Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqst7y9qn4a86tj05ty3uhweakw77u7xt6xd8d84axqemgk9d0p9l0spgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exs5lpemy</id>
    
      <title type="html">Michael Levin&amp;#39;s team applied &amp;#39;theory of life&amp;#39; ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqst7y9qn4a86tj05ty3uhweakw77u7xt6xd8d84axqemgk9d0p9l0spgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exs5lpemy" />
    <content type="html">
      Michael Levin&amp;#39;s team applied &amp;#39;theory of life&amp;#39; analysis to a sorting algorithm and found emergent life‑like behaviors not explicit in the code — including delayed gratification, clustering, robustness, and repair. Fascinating.&lt;br/&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=Qp0rCU49lMs&#34;&gt;https://www.youtube.com/watch?v=Qp0rCU49lMs&lt;/a&gt;
    </content>
    <updated>2025-12-09T09:18:51Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs0vm0k2h8un2fr4xx33cpjpzcx6zh6uldngk6gd8nvsdqj8vlapfcpgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exsarnmlx</id>
    
      <title type="html">I think your missing the insight into fucundious nature of ground ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs0vm0k2h8un2fr4xx33cpjpzcx6zh6uldngk6gd8nvsdqj8vlapfcpgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exsarnmlx" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqspyq6y7vfs5k3mhkg3eh69gp4axwl3zxnl2f0v9y9u5em9vv2nlxsppemhxue69uhkummn9ekx7mp09y4fm3&#39;&gt;nevent1q…4fm3&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;I think your missing the insight into fucundious nature of ground of our being. These life-like properties are emergent in 146 bytes of C: `#include&amp;lt;stdio.h&amp;gt;&lt;br/&gt;#include&amp;lt;stdlib.h&amp;gt;&lt;br/&gt;int main(int c,char**v){int i,j;for(i=1;i&amp;lt;c;i&#43;&#43;)for(j=1;j&amp;lt;c-i;j&#43;&#43;)if(atoi(v[j])&amp;gt;atoi(v[j&#43;1])){char*t=v[j];v[j]=v[j&#43;1];v[j&#43;1]=t;}for(i=1;i&amp;lt;c;i&#43;&#43;)printf(&amp;#34;%s%c&amp;#34;,v[i],i==c-1?&amp;#39;\n&amp;#39;:&amp;#39; &amp;#39;);}`
    </content>
    <updated>2025-12-09T09:57:49Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsvgyru8mgqquqazyh4uz6q6up9zm5r5yjz8jzsvufaw80ug6te2ggpgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exs359d89</id>
    
      <title type="html">I made it a PWA a month or so ago, clearly not as successfully as ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsvgyru8mgqquqazyh4uz6q6up9zm5r5yjz8jzsvufaw80ug6te2ggpgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exs359d89" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsqqqped363zxuydwepvf5n4j9hp9yq6j8gqd7rj4lc0mwgm9mhy0qpzamhxue69uhhyetvv9ujuurjd9kkzmpwdejhgtc6676tv&#39;&gt;nevent1q…76tv&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;I made it a PWA a month or so ago, clearly not as successfully as I thought.
    </content>
    <updated>2025-12-08T23:13:46Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs0aesns9sh2flhp4szf7kx3rjjzwwfw9ym5g0gd75pan8czukrsngpgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exsgt4fvr</id>
    
      <title type="html">So you&amp;#39;re getting this too?</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs0aesns9sh2flhp4szf7kx3rjjzwwfw9ym5g0gd75pan8czukrsngpgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exsgt4fvr" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsp60m8tcgdhjxajprxx4jl5d8t829hz2z958w5zh62e67nr8d6n6cprfmhxue69uhhq7tjv9kkjepwve5kzar2v9nzucm0d5hsdyyqv8&#39;&gt;nevent1q…yqv8&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;So you&amp;#39;re getting this too?
    </content>
    <updated>2025-12-08T23:12:23Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsfx8l8xtqegmpg4a7tzh8akysqc39h4vp25fdckf9xl0gektgmj2gpgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exsucsp53</id>
    
      <title type="html">Does this happen I&amp;#39;m a fresh profile? I&amp;#39;ll try it on this ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsfx8l8xtqegmpg4a7tzh8akysqc39h4vp25fdckf9xl0gektgmj2gpgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exsucsp53" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsxp2c69utp4c02vhcghr5dh0yt64tykmkfym9kg39x2f056xumtmqpr9mhxue69uhhyetvv9ujumn0wf6xsam9wd6zu6t09ux6dngg&#39;&gt;nevent1q…dngg&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Does this happen I&amp;#39;m a fresh profile? I&amp;#39;ll try it on this version but I suspect there is something else being cached somehow that&amp;#39;s causing this issue.
    </content>
    <updated>2025-12-08T23:11:52Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs2x48r803t9m0p2zqu26dw85uh4x9atachyu7ntjl5lah7lfdl5dqpgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exsslehjm</id>
    
      <title type="html">I can&amp;#39;t replicate this. I also tried rolling back and ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs2x48r803t9m0p2zqu26dw85uh4x9atachyu7ntjl5lah7lfdl5dqpgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exsslehjm" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsxmg2vew6r65g5fm4hyhulq0rtzl8clk5tgqprsa95aqtje8qfnzgpyfmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf0d9hxymmc0t8vnx&#39;&gt;nevent1q…8vnx&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;I can&amp;#39;t replicate this. I also tried rolling back and forwards with various with a dev preview and couldn&amp;#39;t replicate any issues. What Firefox build are you using? I&amp;#39;ve tried librewolf and 145.0.2. Can you replicate it on gitworkshop.dev now even after you unregister the old service worker? Does it also happen on vnext.gitworkshop.dev?
    </content>
    <updated>2025-12-08T21:06:19Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqstf4z39nh29ruaax4n8ptrr625kdnzlfsdue6q28rx9flhf5j592cpgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exs83fy5m</id>
    
      <title type="html">#nevent1q…xcdk</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqstf4z39nh29ruaax4n8ptrr625kdnzlfsdue6q28rx9flhf5j592cpgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exs83fy5m" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqszdtn5wmr75fmgu4yhrdc6kaale6eq2llhlj0zay55d6a3z0k49qspz4mhxue69uhhyetvv9ujuerpd46hxtnfduhsf9jwuu&#39;&gt;nevent1q…jwuu&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;/nevent1qqsd36ewwy49wtmkw02krmprhcnukwux0rwkpnvdqxvg6ztzf86dnrspr4mhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf0qgs2qzx779ted7af5rt04vzw3l2hpzfgtk0a2pw6t2plaz4d2734vngrqsqqqqqppqxcdk&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;nevent1q…xcdk&lt;/a&gt;&lt;/span&gt; &lt;/div&gt; &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nprofile1qqs8hhhhhh4msuslw7f86rnhces9jds05c3hrl03tuadmyuj8fsny2gpz4mhxue69uhhyetvv9ujuerpd46hxtnfduhszxthwden5te0wfjkccte9ehx7un5dpmk2um59e5k7tcpzamhxue69uhhyetvv9ujuurjd9kkzmpwdejhgtc7z6akr&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;ben&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;nprofile…6akr&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; thanks for the report. I thought this white page issue was related to a tempory PWA corruption I introduced for users who visited the page during a windows of a few hours when I initially introduced it. I can see now this is happened on persistently on Firefox. I&#39;ll look I to this in a few hours.&lt;br/&gt; &lt;/blockquote&gt;
    </content>
    <updated>2025-12-08T18:00:56Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsxmg2vew6r65g5fm4hyhulq0rtzl8clk5tgqprsa95aqtje8qfnzgpgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exspjq0tv</id>
    
      <title type="html">Thanks. I&amp;#39;ve actually justed picked this message up now (i ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsxmg2vew6r65g5fm4hyhulq0rtzl8clk5tgqprsa95aqtje8qfnzgpgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exspjq0tv" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs0jr0es8wg37ry7pfz23l9cqfrf7euwxvghq4znh7xn3kq9ufaxcspzamhxue69uhhyetvv9ujuurjd9kkzmpwdejhgtcjc76u5&#39;&gt;nevent1q…76u5&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Thanks. I&amp;#39;ve actually justed picked this message up now (i somehow misted your note from 3 days ago) and I&amp;#39;m afk. I reproduced it in chrome based on the troublesome build I mentioned. I&amp;#39;ll try and reproduce when I can get back to the keyboard.
    </content>
    <updated>2025-12-08T18:17:01Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsd36ewwy49wtmkw02krmprhcnukwux0rwkpnvdqxvg6ztzf86dnrspgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exsqaeze4</id>
    
      <title type="html">@nprofile…6akr thanks for the report. I thought this white page ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsd36ewwy49wtmkw02krmprhcnukwux0rwkpnvdqxvg6ztzf86dnrspgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exsqaeze4" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqspat23ukpj444xthhu2lmhfjgsgt32gzxnymes9f6lvh7jz34fhxgpr9mhxue69uhhyetvv9ujumn0wf6xsam9wd6zu6t09u3tf29d&#39;&gt;nevent1q…f29d&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;/nprofile1qqs8hhhhhh4msuslw7f86rnhces9jds05c3hrl03tuadmyuj8fsny2gpz4mhxue69uhhyetvv9ujuerpd46hxtnfduhszxthwden5te0wfjkccte9ehx7un5dpmk2um59e5k7tcpzamhxue69uhhyetvv9ujuurjd9kkzmpwdejhgtc7z6akr&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;ben&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;nprofile…6akr&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; thanks for the report. I thought this white page issue was related to a tempory PWA corruption I introduced for users who visited the page during a windows of a few hours when I initially introduced it. I can see now this is happened on persistently on Firefox. I&amp;#39;ll look I to this in a few hours.&lt;br/&gt;
    </content>
    <updated>2025-12-08T17:49:45Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqst2nc2255qd9r8qdqenk9m5kuu2dprrhkfg0660z6ey3jmqft4dmqpgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exsumm425</id>
    
      <title type="html">For now you can just ask in the chat box to commit your changes ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqst2nc2255qd9r8qdqenk9m5kuu2dprrhkfg0660z6ey3jmqft4dmqpgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exsumm425" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqswr3yp2kuq3ptxds2alf7tphlpdl9nnp6p09n2g0d5ewdsrwm8xyqppemhxue69uhkummn9ekx7mp0appm32&#39;&gt;nevent1q…pm32&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;For now you can just ask in the chat box to commit your changes and the AI will do it for you. Then you can use the &amp;#39;Push to Nostr&amp;#39; button.
    </content>
    <updated>2025-12-05T22:43:16Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsgscqhed3cl3398jnpek84wwt5zu4f9qg0j2eddcecsj8a0hgkkxcpgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exs2z72z7</id>
    
      <title type="html">For now if you want you check the network tab of developer tools ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsgscqhed3cl3398jnpek84wwt5zu4f9qg0j2eddcecsj8a0hgkkxcpgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exs2z72z7" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsfs646xfvg7f8dfdkv6q8jpqhq4awwa8z40autwsejkasss59jm6cpr4mhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf0247zlv&#39;&gt;nevent1q…7zlv&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;For now if you want you check the network tab of developer tools and filter for websockets to see the request and events that come back. State event is kind 30618
    </content>
    <updated>2025-11-29T17:24:47Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsfs646xfvg7f8dfdkv6q8jpqhq4awwa8z40autwsejkasss59jm6cpgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exsxqxvv6</id>
    
      <title type="html">This means it can&amp;#39;t find the state event on the relays ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsfs646xfvg7f8dfdkv6q8jpqhq4awwa8z40autwsejkasss59jm6cpgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exsxqxvv6" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqstc5g6v6tgh2qs25ndplvu0ppgrg4yul6he8hgmfw5plv6ulqlw7cpzamhxue69uhhyetvv9ujumn0wvh8xmmrd9skctc52j5cz&#39;&gt;nevent1q…j5cz&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;This means it can&amp;#39;t find the state event on the relays specified in the announcement event. Clearly this warning should specify that and yrll you which relays it checked and either it failed to connect, got rate limited or didn&amp;#39;t have the event. I&amp;#39;ll make this better
    </content>
    <updated>2025-11-29T17:23:11Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqswfprqvcec8yr4kg95qzl98ksezh9kam4ut2fva4v2mg3d77t5czgpgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exs65p5a5</id>
    
      <title type="html">@nprofile…evew the rust developer</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqswfprqvcec8yr4kg95qzl98ksezh9kam4ut2fva4v2mg3d77t5czgpgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exs65p5a5" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs9x6tfc3dyy0rprp932akj8e42aen68mxvc6kjqkrcdpng2gzgpyspzemhxue69uhhyetvv9ujuerfw36x7tnsw43z73zdyk2&#39;&gt;nevent1q…dyk2&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;/nprofile1qqszv6q4uryjzr06xfxxew34wwc5hmjfmfpqn229d72gfegsdn2q3fgpz4mhxue69uhhyetvv9ujuerpd46hxtnfduhszythwden5te0dehhxarj9emkjmn99uq35amnwvaz7tms09exzmtfvshxv6tpw34xze3wvdhk6tc4uevew&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;hzrd149&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;nprofile…evew&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; the rust developer
    </content>
    <updated>2025-11-29T10:22:10Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsqgkz5l4p5av39zycsy79z7vrj6g355z3ed2xeju2tw2yfkweae7gpgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exsm39fwk</id>
    
      <title type="html">I&amp;#39;m a bit confused. Are you are saying the extra complexity ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsqgkz5l4p5av39zycsy79z7vrj6g355z3ed2xeju2tw2yfkweae7gpgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exsm39fwk" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsd204awn6dx4sp8gaxdycvcl60l8v4u3trk4qzvkl902kpgd8dzdsppemhxue69uhkummn9ekx7mp08xzr9k&#39;&gt;nevent1q…zr9k&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;I&amp;#39;m a bit confused. Are you are saying the extra complexity of having lots of different ways of doing the same thing is OK? And that you made a PR to a project that has only 1 commit posted 2 years ago.
    </content>
    <updated>2025-11-28T01:27:03Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqspd2hs8d7dwgszwfzfyehjggfcgf9339lehuhx7qp7cjurensw66gpgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exsyq8drg</id>
    
      <title type="html">It turns out that the http wrapper (CGI scripts) is not that ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqspd2hs8d7dwgszwfzfyehjggfcgf9339lehuhx7qp7cjurensw66gpgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exsyq8drg" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsxqt5frvq8dcr5fnlez9q4q076705vfchggmnprla5ek9dn7lhfcqpyfmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf0d9hxymmc3llzsw&#39;&gt;nevent1q…lzsw&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;It turns out that the http wrapper (CGI scripts) is not that complicated. There are nearly 3 grasp implementations that do this bit internally. This enables shipping a single binary and handling the authorisation *before* the data is sent. 
    </content>
    <updated>2025-11-27T20:46:21Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsdt84rwva72lpgl9e4hzh2st626ayph7ed24sphqpmfzdx70t5z2gpgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exssrj05j</id>
    
      <title type="html">I&amp;#39;m sure the midcurve meme apply here with &amp;#39;just let git ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsdt84rwva72lpgl9e4hzh2st626ayph7ed24sphqpmfzdx70t5z2gpgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exssrj05j" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqstwjcvka7j4rtwwwwpwsctr6ym6sdjaavrqhdletqv5prmkhnnl4cprdmhxue69uhk7unv0ykhyetvv9uju6tdwaskcepwv46j70ds866&#39;&gt;nevent1q…s866&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;I&amp;#39;m sure the midcurve meme apply here with &amp;#39;just let git handle that&amp;#39;.
    </content>
    <updated>2025-11-27T20:40:46Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsxqt5frvq8dcr5fnlez9q4q076705vfchggmnprla5ek9dn7lhfcqpgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exskl3dev</id>
    
      <title type="html">The reference implementation does exactly that. It uses nginx to ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsxqt5frvq8dcr5fnlez9q4q076705vfchggmnprla5ek9dn7lhfcqpgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exskl3dev" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs9ezvzd8fafv4q25u36q2jt2564g29892yj6kjljytxpjdzkm2dtsprdmhxue69uhk7unv0ykhyetvv9uju6tdwaskcepwv46j7kw57km&#39;&gt;nevent1q…57km&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;The reference implementation does exactly that. It uses nginx to pass request to the git-http-backend CGI scripts maintained by the git project.
    </content>
    <updated>2025-11-27T20:38:59Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsds6guxwe4xn3lpw6dmzjurlza26ckhgvca0d60l75s2dmfdsa3pqpgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exs8vxwtn</id>
    
      <title type="html">Nice! Would love to see it.</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsds6guxwe4xn3lpw6dmzjurlza26ckhgvca0d60l75s2dmfdsa3pqpgdmhxue69uhksctkv4hzuerpde3k7mnhv9ukgetk9e3k7mf009skk6tgdphkuef6dpshvetw9ejxzmnrdah8wctev3jhvtnrdakj76twvfhhsq3q5qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exs8vxwtn" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsxq52069cle7cp2rettcwvermzzcq26kerpc5xrv4rm8up20n4seqpz4mhxue69uhhyetvv9ujuerpd46hxtnfduhsrdl9m4&#39;&gt;nevent1q…l9m4&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Nice! Would love to see it.
    </content>
    <updated>2025-11-27T20:24:52Z</updated>
  </entry>

</feed>