Radish alpha
r
rad:z371PVmDHdjJucejRoRYJcDEvD5pp
Radicle website including documentation and guides
Radicle
Git
explore: Plugin to generate Radicle Explorer URLs
Lorenz Leutgeb committed 5 months ago
commit a9932d6b7905f88ee559c271a8b2def9dfb7ee21
parent 62f9b16
14 files changed +52 -38
modified _guides/protocol.md
@@ -822,9 +822,8 @@ collaboration.
[git-v2]: https://git-scm.com/docs/protocol-v2
[Tor]: https://torproject.org/
[Ed25519]: https://ed25519.cr.yp.to/
-
[iris.radicle.xyz]: https://app.radicle.xyz/nodes/iris.radicle.xyz
-
[rosa.radicle.xyz]: https://app.radicle.xyz/nodes/rosa.radicle.xyz
-
[seed.radicle.xyz]: https://app.radicle.xyz/nodes/seed.radicle.xyz
+
[iris.radicle.xyz]: {{ "iris.radicle.xyz " | explore }}
+
[rosa.radicle.xyz]: {{ "rosa.radicle.xyz " | explore }}
[reverse-dns]: https://en.wikipedia.org/wiki/Reverse_domain_name_notation
[tuf]: https://theupdateframework.github.io/specification/latest/
[noise]: http://www.noiseprotocol.org/noise.html
@@ -835,15 +834,15 @@ collaboration.
[causality]: https://en.wikipedia.org/wiki/Causal_consistency
[dag]: https://en.wikipedia.org/wiki/Directed_acyclic_graph
[topo]: https://en.wikipedia.org/wiki/Topological_sorting
-
[rip-1]: https://app.radicle.xyz/nodes/seed.radicle.xyz/rad:z3trNYnLWS11cJWC6BbxDs5niGo82/tree/0001-heartwood.md
-
[rip-2]: https://app.radicle.xyz/nodes/seed.radicle.xyz/rad:z3trNYnLWS11cJWC6BbxDs5niGo82/tree/0002-identity.md
-
[rip-3]: https://app.radicle.xyz/nodes/seed.radicle.xyz/rad:z3trNYnLWS11cJWC6BbxDs5niGo82/tree/0003-storage-layout.md
+
[rip-1]: {{ "rad:z3trNYnLWS11cJWC6BbxDs5niGo82/tree/0001-heartwood.md" | explore }}
+
[rip-2]: {{ "rad:z3trNYnLWS11cJWC6BbxDs5niGo82/tree/0002-identity.md" | explore }}
+
[rip-3]: {{ "rad:z3trNYnLWS11cJWC6BbxDs5niGo82/tree/0003-storage-layout.md" | explore }}
[nat]: https://en.wikipedia.org/wiki/Network_address_translation
[framing]: https://en.wikipedia.org/wiki/Frame_(networking)
[fs]: https://en.wikipedia.org/wiki/Forward_secrecy
[ecdh]: https://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange
-
[rips]: https://app.radicle.xyz/nodes/seed.radicle.xyz/rad:z3trNYnLWS11cJWC6BbxDs5niGo82
-
[heartwood]: https://app.radicle.xyz/nodes/seed.radicle.xyz/rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5
+
[rips]: {{ "rad:z3trNYnLWS11cJWC6BbxDs5niGo82" | explore }}
+
[heartwood]: {{ "rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5" | explore }}
[did]: https://www.w3.org/TR/did-core/
[seed]: /guides/seeder/
[peer-to-peer]: https://en.wikipedia.org/wiki/Peer-to-peer
modified _guides/user.md
@@ -133,7 +133,7 @@ This command runs an installer script that automates the setup process, by:
> compile from the [source code][heartwood] or get the [binaries] if you
> prefer.

-
[heartwood]: https://app.radicle.xyz/seeds/seed.radicle.xyz/rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5
+
[heartwood]: {{ "rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5" | explore }}
[binaries]: {{ site.url }}/download

Once you've installed Radicle, you can make sure that it was successful by
@@ -2087,7 +2087,7 @@ to resolve `.onion` addresses.
[tor]: https://www.torproject.org
[install-tor]: https://community.torproject.org/onion-services/setup/install/
[cyph-man]: https://www.activism.net/cypherpunk/manifesto.html
-
[heartwood]: https://app.radicle.xyz/nodes/seed.radicle.xyz/rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5
+
[heartwood]: {{ "rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5" | explore }}
[cobs]: /guides/protocol/#collaborative-objects
[ch1]: /guides/user/#1-getting-started
[ch2]: /guides/user/#2-collaborating-the-radicle-way
modified _layouts/index.html
@@ -9,7 +9,7 @@
<body>
  <img class="desktop" width="160" height="160" id="ribbon" src="/assets/images/ribbon.svg" usemap="#ribbon-map"/>
  <map name="ribbon-map">
-
    <area shape="poly" coords="10,0,55,0,160,95,160,160,10,0" href="https://app.radicle.xyz/nodes/seed.radicle.xyz/rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5" target="_blank">
+
	  <area shape="poly" coords="10,0,55,0,160,95,160,160,10,0" href="{{ 'rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5' | explore }}" target="_blank">
  </map>
  {% include header.html %}
  <main>
modified _layouts/post.html
@@ -19,7 +19,7 @@
    </main>
    <aside>
      <p><strong>Follow us</strong> on 🐘 <a href="{{ site.fedi | fedi_to_https }}">Mastodon</a> or 🦋 <a href="https://bsky.app/profile/{{ site.atproto }}">Bluesky</a>.</p>
-
      <p><strong>Contribute</strong> to Radicle as a 🌱 <a href="/guides/seeder">seeder</a>, 🧙 <a href="https://app.radicle.xyz/nodes/seed.radicle.xyz/rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5">developer</a> or by 🪞 <a href="/guides/user/#git-going-with-repositories">mirroring</a> your repositories on the Radicle network.</p>
+
      <p><strong>Contribute</strong> to Radicle as a 🌱 <a href="/guides/seeder">seeder</a>, 🧙 <a href="{{ 'rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5' | explore }}">developer</a> or by 🪞 <a href="/guides/user/#git-going-with-repositories">mirroring</a> your repositories on the Radicle network.</p>
      <p><strong>Join</strong> our community on 💬 <a href="https://radicle.zulipchat.com">Zulip</a> and discuss your ideas to improve Radicle.</p>
    </aside>
    {% include footer.html %}
modified _pages/faq.md
@@ -37,7 +37,7 @@ the problem for over 4 years in total. Previous iterations of Radicle can be
found online, but are considered deprecated in favor of [Heartwood][heartwood],
the latest generation of the protocol.

-
[heartwood]: https://app.radicle.xyz/nodes/seed.radicle.xyz/rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5
+
[heartwood]: {{ "rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5" | explore }}

# Technical Questions

@@ -85,7 +85,7 @@ Radicle checks this automatically, by verifying changes to the maintainer set
through the repository identity document. All you need to know is that you have
the correct Repository ID (RID). See [RIP-2][rip-2] for more information.

-
[rip-2]: https://app.radicle.xyz/nodes/seed.radicle.xyz/rad:z3trNYnLWS11cJWC6BbxDs5niGo82/tree/0002-identity.md
+
[rip-2]: {{ "rad:z3trNYnLWS11cJWC6BbxDs5niGo82/tree/0002-identity.md" | explore }}

## Isn't SHA-1 broken? How do you handle hash collisions?

modified _pages/history.md
@@ -73,8 +73,8 @@ developer stack.

[radworks]: https://radworks.org
[ipfs]: https://ipfs.tech/
-
[heartwood]: https://app.radicle.xyz/seeds/seed.radicle.xyz/rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5
-
[web]: https://app.radicle.xyz/nodes/seed.radicle.xyz/rad:z4V1sjrXqjvFdnCUbxPFqd5p4DtH5
+
[heartwood]: {{ "rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5" | explore }}
+
[web]: {{ "rad:z4V1sjrXqjvFdnCUbxPFqd5p4DtH5" | explore }}
[689]: https://github.com/radicle-dev/radicle-alpha/issues/689
[as]: https://cloudhead.io
[ed]: https://eleftherios.io/
modified _pages/work.md
@@ -2,8 +2,8 @@
title: Work for Radicle
subtitle: Everything you ever wanted to know
---
-
[heartwood]: https://app.radicle.xyz/nodes/seed.radicle.xyz/rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5
-
[rips]: https://app.radicle.xyz/nodes/seed.radicle.xyz/rad:z3trNYnLWS11cJWC6BbxDs5niGo82
+
[heartwood]: {{ "rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5" | explore }}
+
[rips]: {{ "rad:z3trNYnLWS11cJWC6BbxDs5niGo82" | explore }}
[zulip]: https://radicle.zulipchat.com

# Work for Radicle
@@ -61,7 +61,7 @@ We are looking for a protocol developer to push the Radicle protocol forward.

- Design [Radicle Improvement Proposals][rips] to help define the future of Radicle.
- Integrate design decisions into the existing implementation in the [`heartwood`][heartwood] repository.
-
- [Collaborate](https://app.radicle.xyz/nodes/seed.radicle.xyz/rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5/patches?status=merged) with external contributors to help maintain the project.
+
- [Collaborate]({{ "rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5/patches?status=merged" | explore }}) with external contributors to help maintain the project.
- Improve and debug the existing implementation of the protocol.

#### Experience
@@ -88,7 +88,7 @@ We are looking for a developer, who is interested in UX/DX, to push Radicle tool

#### Key Responsibilities

-
- Provide new changes into the [`heartwood`](https://app.radicle.xyz/nodes/seed.radicle.xyz/rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5) repository.
+
- Provide new changes into the [`heartwood`]({{ "rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5" | explore }}) repository.
- Improve `rad`, the Radicle CLI.
- Improving the workflows of other developers using Radicle.
- Collaborate with external contributors to help maintain the project.
added _plugins/explorer.rb
@@ -0,0 +1,15 @@
+
module Jekyll
+
  module Explorer
+
    def explore(input)
+
      base = "https://app.radicle.xyz/nodes"
+
      if input.include?(' ')
+
        prefix, suffix = input.split(' ', 2)
+
        "#{base}/#{prefix}/#{suffix}"
+
      else
+
        "#{base}/iris.radicle.xyz/#{input}"
+
      end
+
    end
+
  end
+
end
+

+
Liquid::Template.register_filter(Jekyll::Explorer)
modified _posts/2024-09-10-radicle-1.0.0.md
@@ -117,9 +117,9 @@ Together, we can make significant progress towards reclaiming the internet.

[cobs]: /guides/protocol#collaborative-objects
[vscode]: https://app.radicle.at/nodes/seed.radicle.gr/rad:z3Makm6fsQQXmpSFE43DZqwupaEhk
-
[heartwood]: https://app.radicle.xyz/nodes/seed.radicle.xyz/rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5
+
[heartwood]: {{ "rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5" | explore }}
[jetbrains]: https://app.radicle.at/nodes/seed.radicle.gr/rad:z3WHS4GSf8hChLjGYfPkJY7vCxsBK
-
[fe]: https://app.radicle.xyz/nodes/seed.radicle.xyz/rad:z4V1sjrXqjvFdnCUbxPFqd5p4DtH5
+
[fe]: {{ "rad:z4V1sjrXqjvFdnCUbxPFqd5p4DtH5" | explore }}
[rc1]: https://x.com/radicle/status/1772659708978991605?s=20
[website]: /
[guides]: /guides
modified _posts/2025-05-30-radicle-with-github-actions.md
@@ -5,7 +5,7 @@ author: rudolfs
layout: blog
---

-
A chat with [burrito](https://app.radicle.xyz/nodes/iris.radicle.xyz/users/did:key:z6MkrubmdTJKR42YZd7yDYysyx4JRez1wmvxjpmhzhTMKxsr) aka [Dietrich Ayala](https://metafluff.com) today sparked the idea to write down how we started dogfooding Radicle before we had our native Radicle CI going. He also encouraged me to just set a deadline for writing blog posts in general, so this had to be written and published by the end of today.
+
A chat with [burrito]({{ "users/did:key:z6MkrubmdTJKR42YZd7yDYysyx4JRez1wmvxjpmhzhTMKxsr" | explore }}) aka [Dietrich Ayala](https://metafluff.com) today sparked the idea to write down how we started dogfooding Radicle before we had our native Radicle CI going. He also encouraged me to just set a deadline for writing blog posts in general, so this had to be written and published by the end of today.

We wanted to dogfood Radicle as soon as possible, but there was one caveat: we didn't have a solution for CI at the time. So what we did was just reuse our existing GitHub actions and push both to Radicle and GitHub. The code review would happen in Radicle, and GitHub would run our tests. For easy visual indication, we used workflow status badges generated for each branch pushed to GitHub.

@@ -56,4 +56,4 @@ sed -e "s|<branchName>|$branchName|g" \
EOF
```

-
This is how we used to run tests and builds. Now, we're dogfooding [our own CI solution](https://app.radicle.xyz/nodes/rosa.radicle.xyz/rad:zwTxygwuz5LDGBq255RA2CbNGrz8) together with [Woodpecker](https://app.radicle.xyz/nodes/iris.radicle.xyz/rad:z39Cf1XzrvCLRZZJRUZnx9D1fj5ws). If you want to learn more about CI in Radicle, check out the conversations on [Zulip](https://radicle.zulipchat.com/#narrow/channel/452370-radicle-ci).
+
This is how we used to run tests and builds. Now, we're dogfooding [our own CI solution]({{ "rad:zwTxygwuz5LDGBq255RA2CbNGrz8" | explore }}) together with [Woodpecker]({{ "rad:z39Cf1XzrvCLRZZJRUZnx9D1fj5ws" | explore }}). If you want to learn more about CI in Radicle, check out the conversations on [Zulip](https://radicle.zulipchat.com/#narrow/channel/452370-radicle-ci).
modified _posts/2025-07-23-using-radicle-ci-for-development.md
@@ -47,7 +47,7 @@ I have written a CI engine for myself,
There are adapters for running CI locally on the host or in a
container, GitHub actions, Woodpecker, and several others. See [`CI
broker
-
README.md`](https://app.radicle.xyz/nodes/radicle.liw.fi/rad:zwTxygwuz5LDGBq255RA2CbNGrz8/tree/README.md)
+
README.md`]({{ "radicle.liw.fi rad:zwTxygwuz5LDGBq255RA2CbNGrz8/tree/README.md" | explore }})
and [integration
documentation](https://explorer.radicle.gr/nodes/seed.radicle.gr/rad:z4Uh671FzoooaHjLvmtW9BtGMF9qm)
for a more complete list. The adapter interface is intentionally easy
@@ -182,7 +182,7 @@ To push changes, run `git push`.
There you go. I now have a Radicle repository to play with. As of
publishing this blog post, the repository is alive on the Radicle
network, if you want to [look at
-
it](https://app.radicle.xyz/nodes/radicle.liw.fi/rad:z3dhWQMH8J6nX3Qo97o5oSFMTfgyr)
+
it]({{ "radicle.liw.fi rad:z3dhWQMH8J6nX3Qo97o5oSFMTfgyr" | explore }})
or clone it.

# CI configuration in the repository
@@ -212,7 +212,7 @@ I find the most frustrating part of using CI to be to wait for a CI
run to finish on a server and then try to deduce from the run log what
went wrong. I've alleviated this by writing an extension to `rad` to
run CI locally:
-
[`rad-ci`](https://app.radicle.xyz/nodes/radicle.liw.fi/rad%3Az6QuhJTtgFCZGyQZhRMZmZKJ3SVG).
+
[`rad-ci`]({{ "radicle.liw.fi rad:z6QuhJTtgFCZGyQZhRMZmZKJ3SVG" | explore }}).
It can produce a huge amount of output, so I've abbreviated that
below.

@@ -481,7 +481,7 @@ but not other systems, since I only use Debian. I would very much
appreciate help with expanding that documentation.

It's probably easiest to install
-
[`rad-ci`](https://app.radicle.xyz/nodes/radicle.liw.fi/rad:z6QuhJTtgFCZGyQZhRMZmZKJ3SVG)
+
[`rad-ci`]({{ "radicle.liw.fi rad:z6QuhJTtgFCZGyQZhRMZmZKJ3SVG" | explore }})
from source code or with `cargo install`, but I have a `deb` package
for those using Debian or derivatives in my [APT
repository](http://apt.liw.fi/).
modified _posts/2025-08-12-canonical-references.md
@@ -184,10 +184,10 @@ your hearts content ❤️🌱

[^1]: Here we are using the term in the sense that some content made may not be considered part of the canon of some story or universe. For example, some Star Wars content may be considered as canon by George Lucas, but some may not be.

-
[^2]: [RIP-4 Canonical References](https://app.radicle.xyz/nodes/seed.radicle.xyz/rad:z3trNYnLWS11cJWC6BbxDs5niGo82/patches/1d1ce874f7c39ecdcd8c318bbae46ffd02fe1ea8?tab=changes)
+
[^2]: [RIP-4 Canonical References]({{ "rad:z3trNYnLWS11cJWC6BbxDs5niGo82/patches/1d1ce874f7c39ecdcd8c318bbae46ffd02fe1ea8?tab=changes" | explore }})

-
[^3]: [First patch attempting to implement canonical references](https://app.radicle.xyz/nodes/seed.radicle.xyz/rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5/patches/c54883e5ffb1f8a99f432e3ac79c0b728cd0dab3)
+
[^3]: [First patch attempting to implement canonical references]({{ "rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5/patches/c54883e5ffb1f8a99f432e3ac79c0b728cd0dab3" | explore }})

-
[^4]: [Second patch implementing canonical references using the identity payload](https://app.radicle.xyz/nodes/seed.radicle.xyz/rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5/patches/bea09df15505cfcebc72ad40f629747d2e82f670)
+
[^4]: [Second patch implementing canonical references using the identity payload]({{ "rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5/patches/bea09df15505cfcebc72ad40f629747d2e82f670" | explore }})

[^5]: [Git ref format and reference patterns](https://git-scm.com/docs/git-check-ref-format)
modified _posts/2025-08-14-jujutsu-with-radicle.md
@@ -565,11 +565,11 @@ Come help in discussion on our [Zulip], and enjoy being Radicle 🌱👾
[git-remote-helpers]: https://git-scm.com/docs/gitremote-helpers

<!-- Radicle -->
-
[heartwood]: https://app.radicle.xyz/nodes/seed.radicle.xyz/rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5
+
[heartwood]: {{ "rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5" | explore }}
[Zulip]: https://radicle.zulipchat.com
[download]: /download
[guide-user-cobs]: /guides/user#2-collaborating-the-radicle-way
[guide-user-patch]: /guides/user#working-with-patches
[guides]: /guides
-
[rip-storage]: https://app.radicle.xyz/nodes/rosa.radicle.xyz/rad:z3trNYnLWS11cJWC6BbxDs5niGo82/tree/0003-storage-layout.md
-
[rip-storage-namespace]: https://app.radicle.xyz/nodes/rosa.radicle.xyz/rad:z3trNYnLWS11cJWC6BbxDs5niGo82/tree/0003-storage-layout.md#layout
+
[rip-storage]: {{ "rad:z3trNYnLWS11cJWC6BbxDs5niGo82/tree/0003-storage-layout.md" | explore }}
+
[rip-storage-namespace]: {{ "rad:z3trNYnLWS11cJWC6BbxDs5niGo82/tree/0003-storage-layout.md#layout" | explore }}
modified index.md
@@ -12,7 +12,7 @@ Unlike centralized code hosting platforms, there is no single entity
controlling the network. Repositories are replicated across peers in a
decentralized manner, and users are in full control of their data and workflow.

-
<a class="screenshot" href="https://app.radicle.xyz/nodes/seed.radicle.xyz/rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5" target="_blank" title="Heartwood is the latest generation of the Radicle protocol">
+
<a class="screenshot" href="{{ 'rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5' | explore }}" target="_blank" title="Heartwood is the latest generation of the Radicle protocol">
  <img class="screenshot" src="/assets/images/web-app-screenshot.png"/>
</a>
<small class="caption">
@@ -99,14 +99,14 @@ and other clients can be developed.
└────────────────┘└─────────────────┘
</pre>

-
<a class="button" href="https://app.radicle.xyz/nodes/seed.radicle.xyz">Browse our repositories ↗</a>
+
<a class="button" href="{{ '' | explore }}">Browse our repositories ↗</a>

# Contributing

Radicle is *free and open source* software under the MIT and Apache 2.0
licenses. Get involved by [contributing code][contribute].

-
[contribute]: https://app.radicle.xyz/nodes/seed.radicle.xyz/rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5/tree/CONTRIBUTING.md
+
[contribute]: {{ "rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5/tree/CONTRIBUTING.md" | explore }}

# Updates

@@ -168,7 +168,7 @@ channel on Zulip.
[bsky]: https://bsky.app/profile/{{ site.atproto }}
[mast]: {{ site.fedi | fedi_to_https }}
[zulip]: https://radicle.zulipchat.com
-
[heartwood]: https://app.radicle.xyz/nodes/seed.radicle.xyz/rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5
+
[heartwood]: {{ "rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5" | explore }}
[desktop]: /desktop
[cobs]: /guides/protocol#collaborative-objects
[local-first]: https://www.inkandswitch.com/local-first/