<feed xmlns='http://www.w3.org/2005/Atom'>
<title>hugo-theme-journal/layouts/_markup/render-image.html, branch 2026.09.19</title>
<subtitle>Hugo theme for my journal.</subtitle>
<id>https://git.nicholasjohnson.ch/hugo-theme-journal/atom?h=2026.09.19</id>
<link rel='self' href='https://git.nicholasjohnson.ch/hugo-theme-journal/atom?h=2026.09.19'/>
<link rel='alternate' type='text/html' href='https://git.nicholasjohnson.ch/hugo-theme-journal/'/>
<updated>2026-09-19T20:34:32Z</updated>
<entry>
<title>Drop scripting URL schemes from links and images</title>
<updated>2026-09-19T20:34:32Z</updated>
<author>
<name>Nicholas Johnson</name>
<email></email>
</author>
<published>2026-09-18T00:00:00Z</published>
<link rel='alternate' type='text/html' href='https://git.nicholasjohnson.ch/hugo-theme-journal/commit/?id=61d07d87a9b54cd102699e065a349d5c3fc4a06fbe7a96c255e43aa182c02be7'/>
<id>urn:sha256:61d07d87a9b54cd102699e065a349d5c3fc4a06fbe7a96c255e43aa182c02be7</id>
<content type='text'>
Both render hooks passed the destination through safeURL, which bypasses
the sanitising that html/template would otherwise apply, so a
javascript: or data:text/html destination in Markdown became a live
scripting URL in the page. That matters for any site built from content
its author did not write.

safeURL cannot simply be dropped: it is what allows gemini:// and other
schemes html/template does not recognise to survive, which this theme
depends on. Reject the scripting schemes explicitly instead, render the
link text on its own, and warn during the build so the author can see
what was dropped. data: is still allowed for images, where it is a
legitimate way to inline one.

Co-Authored-By: Claude Opus 5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Migrate fully to Hugo's new template system</title>
<updated>2025-07-26T00:00:00Z</updated>
<author>
<name>Nicholas Johnson</name>
<email></email>
</author>
<published>2025-07-26T00:00:00Z</published>
<link rel='alternate' type='text/html' href='https://git.nicholasjohnson.ch/hugo-theme-journal/commit/?id=9bb9989fca490bfac69ea4387ccae1e9ec3ec23cf7f47a401e241ee43562f8a3'/>
<id>urn:sha256:9bb9989fca490bfac69ea4387ccae1e9ec3ec23cf7f47a401e241ee43562f8a3</id>
<content type='text'>
This was the only way I could get term pages to consistently render
correctly.
</content>
</entry>
</feed>
