From 732f936053a1ec50c7c7b0857badbc25a7eb779b Mon Sep 17 00:00:00 2001 From: JP Hastings-Spital Date: Mon, 29 Apr 2024 15:27:50 +0100 Subject: [PATCH] First Gemini Compatibility MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This seems to mostly work! It's configured to work with Agate, and I haven't figured out the deploy mechanism yet — but it's a start! --- config.toml | 14 ++++ .../a-patagonian-love-story/index.md | 14 ++-- content/posts/arc-new-browser/index.md | 6 +- content/posts/goodbye-big-social/index.md | 6 +- content/posts/link-shortener/index.md | 4 +- content/posts/the-beauty-of-type/index.md | 4 ++ layouts/_default/single.gmi | 69 +++++++++++++++++++ layouts/index.gmi | 5 ++ layouts/shortcodes/figure.gmi | 12 ++++ layouts/shortcodes/figure.html | 5 +- layouts/shortcodes/spotify.gmi | 8 +++ layouts/shortcodes/youtube.gmi | 3 + static/.meta | 3 + 13 files changed, 132 insertions(+), 21 deletions(-) create mode 100644 layouts/_default/single.gmi create mode 100644 layouts/index.gmi create mode 100644 layouts/shortcodes/figure.gmi create mode 100644 layouts/shortcodes/spotify.gmi create mode 100644 layouts/shortcodes/youtube.gmi create mode 100644 static/.meta diff --git a/config.toml b/config.toml index d868a5cd..3a46e11b 100644 --- a/config.toml +++ b/config.toml @@ -174,6 +174,8 @@ date = ["date", "publishDate", "lastmod", ":git"] [mediaTypes] [mediaTypes.'text/opml'] suffixes = ['opml'] + [mediaTypes.'text/gemini'] + suffixes = ['gmi'] [outputFormats] [outputFormats.opml] mediaType = 'text/opml' @@ -184,6 +186,18 @@ date = ["date", "publishDate", "lastmod", ":git"] [outputFormats.rss] baseName = 'index' name = 'rss' + [outputFormats.gemini] + name = 'Gemini' + isPlainText = true + isHTML = false + mediaType = 'text/gemini' + protocol = 'gemini://' + permalinkable = true + noUgly = true + +[outputs] + home = ["html", "rss", "gemini"] + page = ["html", "gemini"] [minify] [minify.tdewolff] diff --git a/content/posts/adventure-awaits/a-patagonian-love-story/index.md b/content/posts/adventure-awaits/a-patagonian-love-story/index.md index af802c77..0eaef048 100644 --- a/content/posts/adventure-awaits/a-patagonian-love-story/index.md +++ b/content/posts/adventure-awaits/a-patagonian-love-story/index.md @@ -9,37 +9,37 @@ series: - Adventure Awaits --- -{{< figure alt="The three stunning spires of Torres del Paine,standing in front of the lagoon on top of the mountain." src="header.webp" class="big">}} +{{< figure title="Torres del Paine" alt="The three stunning spires of Torres del Paine,standing in front of the lagoon on top of the mountain." src="header.webp" class="big">}} A day or two before arriving in Patagonia I started looking at reviews of the “W” circuit hike that is one of the star attractions of the region. It’s a 70km hike with two 1km high viewpoints to reach, that we were planning to complete over 5 days (and 4 nights staying in well tended hostels, or _refugios_), so getting some advice from those before us seemed prudent at the least! One review stood out to me: “Completing this trek was one of the best experiences of my life”, said Helen from Minnesota. As much as I do it myself, I do tend to roll my eyes at hyperbole — sure Torres del Paine is world-class beautiful, and I know how far people travel from around the world to walk the “W” and the “O” circuits, but… of a _life?_ -{{< figure caption="This is the route we walked, from right to left. You can see why it's called the \"W\"! (I forgot to turn on the tracking for the first half hour of day 3!)" src="the-w-route.webp" >}} +{{< figure title="Our route around the W" caption="This is the route we walked, from right to left. You can see why it's called the \"W\"! (I forgot to turn on the tracking for the first half hour of day 3!)" src="the-w-route.webp" >}} Well, my Minnesotan friend, how right you were! Not only was every moment of the hike eye-wateringly beautiful but also, at the practically divine peak of _Mirador Base las Torres_, Yvette proposed to me! “Adventure awaits, mi amor”, the engraving in the compass said, as the needle swung to point directly at her, “and I would love you to be part of all my adventures to come… Will you marry me?” Any of you who’ve hung out with us will know there was only ever going to be one answer to that question, but saying “yes” in such a majestic space was even more a privilege and joy. -{{< figure alt="The two of us cuddling in front of the engraved inside of my new engagement compass, it reads \"And I would love you to be part of all my adventures to come… Will you marry me? ❤️\"" src="engagement-compass.webp" >}} +{{< figure title="The magical engagement compass" alt="The two of us cuddling in front of the engraved inside of my new engagement compass, it reads \"And I would love you to be part of all my adventures to come… Will you marry me? ❤️\"" src="engagement-compass.webp" >}} That first day was beautiful even before the summit — neither the spitting rain (nor Yvette’s nerves, it seems) could stop our ear-to-ear grins. The final rock-scramble to the top was definitely a tricky one (my [IT-bands](https://en.wikipedia.org/wiki/Iliotibial_tract) are still complaining), but that moment where the three towers rose above the eerie other-worldly terrain still glows within me. -{{< figure caption="Day 1, from left to right: Yvette at the river at _Refugio Chileno_; that same river coming down the valley towards the \"Windy Pass\"; the two of us looking very happy with ourselves as a newly engaged couple at the _Mirador Base las Torres_; one of the many waterfalls that refreshed us enough to make the hike; our surprisingly excellent dinner at _Refugio Central_." src="first-day.webp" class="big">}} +{{< figure title="A collage of photos from Day 1" caption="Day 1, from left to right: Yvette at the river at _Refugio Chileno_; that same river coming down the valley towards the \"Windy Pass\"; the two of us looking very happy with ourselves as a newly engaged couple at the _Mirador Base las Torres_; one of the many waterfalls that refreshed us enough to make the hike; our surprisingly excellent dinner at _Refugio Central_." src="first-day.webp" class="big">}} With such a momentous first summit you might think that we barely noticed the rest of our 5 day hike, but Torres del Paine continued to show us its most beautiful side. The weather only improved and, on the second day alone, gave us bird-filled hikes along pebbly beaches, long (and very well maintained) rope and plank bridges across raging snowmelt rivers, and wonderful _refugios_ (hostel refuges) filled with surprisingly good food, reasonably priced beer, and the most lovely hikers from around the globe. (We learned a great Israeli card game called “Yaniv”, taught to us by new Dutch friends — the kind of combination you’ll only get while backpacking!) -{{< figure caption="Days 2 & 3, from left to right: Yvette hiking the pleasantly wandering path to _Refugio Cuernos_; the beautiful glacial lakeside views nearing _Refugio Cuernos_; Yvette donning my 'marmalade' down jacket as we cool down (with a beer) post-hike at _Cuernos_; the rather unstable long and rocky downward route from Cuernos onwards; the two of us waving a fond good-riddance to _Miradors Frances_ and _Británico_ (on the right of the valley)" src="middle-days.webp" class="big">}} +{{< figure title="A collage of photos from Days 2 & 3" caption="Days 2 & 3, from left to right: Yvette hiking the pleasantly wandering path to _Refugio Cuernos_; the beautiful glacial lakeside views nearing _Refugio Cuernos_; Yvette donning my 'marmalade' down jacket as we cool down (with a beer) post-hike at _Cuernos_; the rather unstable long and rocky downward route from Cuernos onwards; the two of us waving a fond good-riddance to _Miradors Frances_ and _Británico_ (on the right of the valley)" src="middle-days.webp" class="big">}} Day three was a little more challenging for me, especially after my mistake of not stretching down on day 1 with all the celebrations! The 1km high _Mirador Británico_ (the British viewpoint, hilariously just a little higher up the path from the _Mirador Frances_) was rather daunting — that 1,042m climb, the rock-scrabble down, and the 8km onward hike put a very long day between us and our next ~~refugio~~ beer… We made it most of the way to the _Mirador Frances_, but at the point my knees were causing stops every 5 minutes, Yvette—travelling on a French passport—proudly proclaimed that “this spot looks very French to me”, which was all the excuse I needed! -{{< figure caption="Days 4 & 5, from left to right: Post-hike beers at _Refugio Paine Grande_ preparing for the final stages; fields of beautiful orchids hidden from the wind on the Western fork of the \"W\"; early morning near _Refugio Grey_, the two of us (and a tiny moon) on the chilly glacial beach at our North-most point; the unexpectedly hot final hike, we'd left as much baggage as possible at _Paine Grande_, time for improvised hats; finito! _Cuernos_ spearing the sky behind Yvette, who grins at the thought of a celebratory beer hunt." src="last-days.webp" class="big">}} +{{< figure title="A collage of photos from Days 4 & 5" caption="Days 4 & 5, from left to right: Post-hike beers at _Refugio Paine Grande_ preparing for the final stages; fields of beautiful orchids hidden from the wind on the Western fork of the \"W\"; early morning near _Refugio Grey_, the two of us (and a tiny moon) on the chilly glacial beach at our North-most point; the unexpectedly hot final hike, we'd left as much baggage as possible at _Paine Grande_, time for improvised hats; finito! _Cuernos_ spearing the sky behind Yvette, who grins at the thought of a celebratory beer hunt." src="last-days.webp" class="big">}} The journey to _Refugio Grey_, the last of our hiking pit-stops, was as beautiful as the refuge was comfortable. Whole hillsides of fuscia orchids, brazen _[Chimango Caracara](https://en.wikipedia.org/wiki/Chimango_caracara)_ and other wonderful wildlife preening just off the path, with the enormous glacier always poised at the end of the Lake Grey — it made the 30º sun and 65km/h winds _enjoyable_, not just worth tolerating! -{{< figure caption="The view from _Mirador Grey_ out towards _Refugio Grey_ and the glacier, which is part of a single 1,495km² icefield that spans most of Southern Chile and Argentina." src="the-w-route.webp" >}} +{{< figure title="Us in front of the glacier" caption="The view from _Mirador Grey_ out towards _Refugio Grey_ and the glacier, which is part of a single 1,495km² icefield that spans most of Southern Chile and Argentina." src="the-glacier.webp" >}} Wow, I’ve rambled on almost longer than our hike! Suffice to say that you should immediately plan your trip to Patagonia’s beautiful _Torres del Paine_, it’s the hike of a lifetime _even if_ you don’t have a wonderful human craftily planning its next thrilling chapter. diff --git a/content/posts/arc-new-browser/index.md b/content/posts/arc-new-browser/index.md index 8dd6b05a..82c98e44 100644 --- a/content/posts/arc-new-browser/index.md +++ b/content/posts/arc-new-browser/index.md @@ -15,13 +15,13 @@ It seems to me like new browsers are very popular at the moment. I love that thi I've oscillated a little through web browsers in the roughly two and a half decades(!) I've been a "netizen", but they've almost always been tied to my OS. I've literally _just_ started using [Arc](https://arc.net/), and I'm already adoring it. -{{< figure src="arc.png" alt="A screenshot of the Arc browser, viewing the homepage of this blog.">}} +{{< figure src="arc.png" title="What the Arc browser looks like" alt="A screenshot of the Arc browser, viewing the homepage of this blog.">}} Why do I like it so quickly? It's extremely well designed; the novel choice to put a border around the viewport makes web pages feel like something to be appreciated again, the vertical tab bar—and the choice to archive any non-pinned tabs when you close that window—makes it easy to find what you're looking for and keep only what you need, the "Little Arc" windows really feel like peeking into other websites while keeping focus on the original one, and a thousand other choices made for your _enjoyment_. I'll write more after using it for a while but, weirdly, the one thing that's made me love it more than anything else? The 'make Arc your default browser' dialog offered "Yes", "No", and "Let me try it for a week". Very smart, and just what I wanted. -{{< figure src="little-arc.webp" title="The 'Little Arc' browser windows make it really easy to dip into a site quickly, from another webpage, or another app." >}} +{{< figure src="little-arc.webp" title="What the 'Little Arc' windows look like" caption="The 'Little Arc' browser windows make it really easy to dip into a site quickly, from another webpage, or another app." >}} Writing this got me reminiscing; it's not a lens I thought I'd ever use to look back on my life to date, but here we go… @@ -29,7 +29,7 @@ Writing this got me reminiscing; it's not a lens I thought I'd ever use to look I started on the world wide web with [Netscape](https://en.wikipedia.org/wiki/Netscape_(web_browser)#/media/File:Apple_Unix_with_Netscape.png). It sat on my school's Apple Macintoshes and you could find me, too frequently, seeking the arcane knowledge of the world. I remember my first HTML(3) was written on one of those macs, I _think_ I also had a Geocities site (I've never been able to find it in the archives though). Doors opened, potential oozed everywhere — I'm pretty sure that's where all this started for me! -{{< figure caption="Who could forget how _everything_ you installed also required you add a new IE browser toolbar." alt="A very old version of Internet Explorer with so many toolbar browser extensions the web page is only a few pixels high." src="ie-browser-extensions.png" >}} +{{< figure title="Too many toolbars" caption="Who could forget how _everything_ you installed also required you add a new IE browser toolbar." alt="A very old version of Internet Explorer with so many toolbar browser extensions the web page is only a few pixels high." src="ie-browser-extensions.png" >}} I switched [Internet Explorer](https://en.wikipedia.org/wiki/Internet_Explorer#/media/File:Internet_Explorer_1.0.png) when Windows 95 came to my family home, and the school library gained three new computers. I was building web 1.0 sites fairly often by this point, I cringe at the thought of most of them (for the content and at my lack of awareness), but the notepad.exe written HTML was glorious. diff --git a/content/posts/goodbye-big-social/index.md b/content/posts/goodbye-big-social/index.md index 3e2a972b..0adbd847 100644 --- a/content/posts/goodbye-big-social/index.md +++ b/content/posts/goodbye-big-social/index.md @@ -9,15 +9,11 @@ tags: summary: Why I'm leaving 'big' social media. --- -_**TL;DR**: I'm going to leave Meta's social networking platforms (Facebook, Instagram) on June 16th, 2023. This website, [byJP.me](https://byjp.me), will always show good ways to reach me and find out what I'm up to — please say hello if we haven't chatted in a while!_ - ---- - I'm pretty fed up of Facebook and Instagram. I barely use them, but when I do I _binge_, and end up feeling terrible afterwards. I'm familiar with how sites like these use data analytics to group humans into buckets according to the best ways to maximise dopamine release, and the _percent of our day_ we spent on their sites/apps, and it makes me itch. I don't want my attention to be milked. I don't want to feel _more_ distant from my friends on the platforms that claim to connect me with them. Six advertisements and four rose-tinted travel "influencer" posts between anything relating to my friends' lives isn't useful or good for me. It's clearly time to leave. -{{< figure src="insta-ages.jpg" title="My first, precisely middle, and last posts on instagram. From left to right: the 'Creepy mounted fox head' I apparently joined Instagram to post a photo of (Nov 20, 2010); a scan of an old and wonderful photo of my Mum's late partner, Tony, standing over a moped looking ready to fly (Jan 4, 2017); a photo of my fiancée looking out over stunning Rio de Janiero from Pão de Açucar (Feb 15, 2023)." class="big" >}} +{{< figure src="insta-ages.jpg" caption="My first, precisely middle, and last posts on instagram. From left to right: the 'Creepy mounted fox head' I apparently joined Instagram to post a photo of (Nov 20, 2010); a scan of an old and wonderful photo of my Mum's late partner, Tony, standing over a moped looking ready to fly (Jan 4, 2017); a photo of my fiancée looking out over stunning Rio de Janiero from Pão de Açucar (Feb 15, 2023)." class="big" >}} I joined Facebook in 2005, excited at the technical and societal marvel that was [web 2.0](https://en.wikipedia.org/wiki/Web_2.0), and Instagram (then independent of Meta) in 2010, delighting at having both a camera _and_ the internet in my pocket at once. I enjoyed sharing and creating on those platforms then (I did it though none of my friends had joined yet!) but now my every word and pixel is fed into a runaway marketing algorithm, and I'm going to get off the train. diff --git a/content/posts/link-shortener/index.md b/content/posts/link-shortener/index.md index 505cd104..06599a29 100644 --- a/content/posts/link-shortener/index.md +++ b/content/posts/link-shortener/index.md @@ -16,9 +16,9 @@ syndications: - https://hachyderm.io/@byjp/110678606565568698 --- -Link shorteners are superbly useful, but _really bad_ for the longevity of the world wide web. Every time you use tinyurl.com, bit.ly, or similar you are taking something open and direct (the web address of the think you're pointing people to) and hiding it within the black box that is the company behind that site. +Link shorteners are superbly useful, but _really bad_ for the longevity of the world wide web. Every time you use tinyurl.com, bit.ly, or similar you are taking something open and direct (the web address of the think you're pointing people to) and hiding it within the black box that is the company behind that site. We can improve this dire situation with the InterPlanetary FileSystem! -What happens if tinyurl.com closes its doors? Or if bit.ly is bought by a billionaire who charges people to see the long link behind the short one? This is the way the web "rots"; by the removal of the content that holds it together. +If tinyurl.com closes its doors, or if bit.ly is bought by a billionaire who charges people to see the long link behind the short one, part of the interlinking fabric that holds the web together is lost. This is the way the web "rots"; by the removal of the content that holds it together. However short links are _incredibly_ useful; humans can't remember the long sequences of letters and numbers that some web addresses need to be, so what's to be done? diff --git a/content/posts/the-beauty-of-type/index.md b/content/posts/the-beauty-of-type/index.md index 7265135e..4caa7c2d 100644 --- a/content/posts/the-beauty-of-type/index.md +++ b/content/posts/the-beauty-of-type/index.md @@ -9,6 +9,10 @@ tags: - postcards - project summary: I created a font from a piece of art made for me by a friend. +references: + - url: https://www.youtube.com/watch?v=tMYjozPtJ-8 + name: Demo video of the Caspian font & website + type: video syndications: - https://medium.com/miriscient/the-beauty-of-type-29ab1000e9e4 - https://soundcloud.com/miriscient/the-beauty-of-type diff --git a/layouts/_default/single.gmi b/layouts/_default/single.gmi new file mode 100644 index 00000000..540ea02b --- /dev/null +++ b/layouts/_default/single.gmi @@ -0,0 +1,69 @@ +# {{ .Title }} + +{{ $sections := split (replaceRE `^\s*` "\n" .Page.RenderShortcodes) "\n#" -}} + +{{- $first := true -}} +{{- range $sections -}} + {{- $content := . -}} + {{- if not $first -}} + {{- $content = printf "\n#%s" $content -}} + {{- end -}} + {{- $first = false -}} + + {{/* Swap out unsupported list types */}} + {{- $content := $content | replaceRE `\n- (.+?)` "\n* $1" -}} + {{- $content := $content | replaceRE `\n(\d+). (.+?)` "\n* $2" -}} + {{/* Remove footnote references */}} + {{- $content := $content | replaceRE `\[\^(.+?)\]:?` "" -}} + {{/* Swap out forced newlines */}} + {{- $content := $content | replaceRE `
` "\n" -}} + {{- $content := $content | replaceRE `\\\n` "\n" -}} + {{/* Links */}} + {{- $content := $content | replaceRE `(.+?)` "[$2]($1)" -}} + {{- $content := $content | replaceRE `\sgemini://(\S*)` " [gemini://$1](gemini://$1)" -}} + {{/* Horizontal rules */}} + {{- $content := $content | replaceRE "\n+---\n+" "\n\n" -}} + {{/* Images */}} + {{- $content := $content | replaceRE `\n\n!\[.*]\((.+?)\)` "\n\n=> $1 An untitled image" -}} + + {{- $refs := findRE `\[.+?\]\([^#].+?\)` $content -}} + {{- $content := $content | replaceRE `\[(.+?)\]\((.+?)\)` "$1" -}} + + {{- $content | safeHTML -}} + + {{- if gt (len $refs) 0 -}} + {{- "\n" -}} + {{- range $refs -}} + {{- $parts := split . "](" -}} + {{- $link := substr (index $parts 1) 0 (sub (len (index $parts 1)) 1) -}} + {{- $title := substr (index $parts 0) 1 | strings.FirstUpper -}} + => {{ printf "%s %s\n" $link $title -}} + {{- end -}} + {{- end -}} +{{- end }} + +# What's next +{{ $dateType := "published" -}} +{{- $date := .Date -}} +{{- if not .Date -}} + {{- $date = .Lastmod -}} + {{- $dateType := "updated" -}} +{{- end }} +This post was {{ $dateType }} by JP on **{{ $date.Format (.Site.Params.dateFormat | default "2 January 2006") }}** +{{- if not .Params.geminiAware }}, originally in markdown and _without_ Gemini in mind, so things might look a little odd!{{else}}.{{ end }} + +{{ with .Params.tags -}} +I've not quite figured out if hashtags are useful in a Gemini context, but this post was tagged with{{ range (. | sort) }} #{{ . }}{{ end -}}. +{{- end }} + +=> https://www.byjp.me{{ replace (replace .RelPermalink "/gemini" "" 1) "index.gmi" "" }} View this page on the WWW +{{ with .NextInSection }}=> {{ .RelPermalink }} Next post: {{ .Title }}{{ end }} +{{ with .PrevInSection }}=> {{ .RelPermalink }} Next post: {{ .Title }}{{ end }} + +You may also want to visit: + +=> / 🏡 Home +{{ range .Site.Menus.main -}} + => {{ .URL | relURL }} {{ .Name }} +{{ end -}} + diff --git a/layouts/index.gmi b/layouts/index.gmi new file mode 100644 index 00000000..3d7678e3 --- /dev/null +++ b/layouts/index.gmi @@ -0,0 +1,5 @@ +## List of posts + +{{ range .RegularPages }} +=> {{ .RelPermalink }} {{ .Title }} +{{- end }} diff --git a/layouts/shortcodes/figure.gmi b/layouts/shortcodes/figure.gmi new file mode 100644 index 00000000..0092319c --- /dev/null +++ b/layouts/shortcodes/figure.gmi @@ -0,0 +1,12 @@ +{{- $src := path.Join (path.Dir .Page.RelPermalink) (.Get "src") -}} +{{- $title := "An untitled image" -}} +{{- $caption := (.Get "caption") -}} +{{- $captionChunks := split $caption "." -}} +{{- if lt (len (index $captionChunks 0)) 64 -}} + {{- $title = index $captionChunks 0 -}} + {{- $caption = delimit (after 1 $captionChunks) "." -}} +{{- end -}} +{{- $title := (.Get "title") | default $title -}} +=> {{ $src }} {{ $title }} +{{- with $caption }}{{ if ne $title . }} +> {{ . }}{{ end }}{{ end -}} diff --git a/layouts/shortcodes/figure.html b/layouts/shortcodes/figure.html index 0e906dbc..be9f007b 100644 --- a/layouts/shortcodes/figure.html +++ b/layouts/shortcodes/figure.html @@ -2,7 +2,7 @@ {{- if .Get "link" -}} {{- end }} - {{ with .Get {{ end -}} {{- if or (or (.Get "title") (.Get "caption")) (.Get "attr") -}}
- {{ with (.Get "title") -}} -

{{ . | markdownify }}

- {{- end -}} {{- if or (.Get "caption") (.Get "attr") -}}

{{- .Get "caption" | markdownify -}} {{- with .Get "attrlink" }} diff --git a/layouts/shortcodes/spotify.gmi b/layouts/shortcodes/spotify.gmi new file mode 100644 index 00000000..6b8353ac --- /dev/null +++ b/layouts/shortcodes/spotify.gmi @@ -0,0 +1,8 @@ +{{- $displayArtist := (.Get "composer") | default (.Get "artist") -}} +{{- $displayTitle := (.Get "title") | default (.Get "album") -}} +{{- $songwhip := .Get "url" -}} +{{- if $displayArtist -}} + {{- $songwhip = printf "https://songwhip.com/%s/%s" (partial "kebab.txt" (.Get "artist")) (partial "kebab.txt" $displayTitle) }} +{{- end -}} + +=> {{ $songwhip }} 🎵 {{ $displayArtist }}{{ with $displayTitle }}{{ if $displayArtist }}: {{ end }}{{ . }}{{ end }} diff --git a/layouts/shortcodes/youtube.gmi b/layouts/shortcodes/youtube.gmi new file mode 100644 index 00000000..e53cf3e3 --- /dev/null +++ b/layouts/shortcodes/youtube.gmi @@ -0,0 +1,3 @@ +{{- $url := printf "https://www.youtube.com/watch?v=%s" (.Get 0) -}} +{{- $ref := partial "reference.obj" (dict "url" $url "references" .Page.Params.references)}} +=> {{$url}} {{ with $ref }}{{.name}}{{ end }} diff --git a/static/.meta b/static/.meta new file mode 100644 index 00000000..ea522bb3 --- /dev/null +++ b/static/.meta @@ -0,0 +1,3 @@ +# Agate metadata file (for serving Gemini with Agate) +# I use inline type descriptions (bold, italic) +**/*.gmi: ;type=inline;lang=en-GB