Update css_darkmode to handle media queries under @supports. This filter currently does not "see" anything within a @supports block, so the hoisting of dark-mode media queries inside such a block is not properly done. Fix this by restructuring the filter to recurse down into these blocks.
Implement dark mode without using CSS variables. Instead of using CSS variables, we can just directly change colours with appropriate media queries. Moreover, implement a small postprocessor which consolidates all the dark mode rules together at the end of the stylesheet, which makes it a svery imple matter to also link an alternate stylesheet which is selectable in older browsers.
Automatically adjust colour scheme for "dark mode". Playing around a bit, let's try to respect "dark" mode in firefox and support automatically switching colour scheme accordingly. We convert all colour references in the stylesheet to new SASS mixins that will generate rules to adapt to the correct colour scheme. The selection is done using CSS variables that should gracefully degrade to the original (light) colours.
Suggest keyserver (again) for retrievng public keys. The keyserver protocol is super simple and just consists of HTTP requests, so we can self-host this option pretty easily too. This is probably more widely supported than the very new Web Key Directory. I also prefer how the retrieval instructions specify an explicit key ID rather than just an email address.
Ensure ASCII-armoured keyrings are text items. The gzip postprocess rule only applies to text items, so the ASCII-armoured keyring is not compressed. It does not seem possible to produce both binary and text items from a filter depending on options, so we split the filter into two: one for the binary export required by WKD and the other for the armoured export for manual download.
Update GPG instructions for packages. It seems the keys.gnupg.net keyserver has been dead for some time, so it is not a viable option for public key distribution. The new-ish Web Key Directory gives similar functionality but unlike third party keyservers is self-hosted.
Use special SCSS comments for source and copyright info. SCSS will preserve comments that begin with /*! even when writing out compressed CSS. While I'm not sure if I want to actually do this, let's write out such comments for the source and copyright info which should not be omitted.
Embed SVG icons directly into output. Inlining SVGs directly in the markup seems to interoperate somewhat better than linking SVGs in img elements, and we can fairly easily create fallback markup that degrades to a raster image. Currently this is only applicable to the file listings because the fallback markup is hardcoded to the icons on these pages. This will need to be expanded in the future. The results seem pretty good, although nothing I do in old Mozilla versions seems to be able to get the stylesheet sizes to properly apply to SVG elements, so the icons are rendered correctly but at the wrong scale. SVG support can be disabled in this browser and the fallback works properly. More work may be required.
Improve script hack compatibility. Old versions of Netscape will actually try and execute these definitely-not-javascript hacks as Javascript. So let's try to avoid that from happening by making the contents look like one big Javascript comment. We might need an additional workaround if any of the contents contains a literal */. We'll cross that bridge when we get to it.
Release slotifier-1. Mostly a trial to see if we can get all the infrastructure in place to release tarballs tarballs on the website. Newly introduced is an "archive" directory, which provides for browseable file listings, as well as the ability to link to the most recent tar file in the generated project descriptions.
Generate slotifier project page from bundled README.md. Instead of keeping this information on the website, move most of the contents of the slotifier project page to that package's README. Then, use some scripts to pull the contents back into the website via a git submodule.
Don't regenerate smaller images so often. It is a bit annoying how nanoc always runs the rule to regenerate resized images, even if none of the inputs are changed at all. Since the imgresize filter is quite expensive to run, let's try hacking around the problem by passing in the final output filename and just re-using that if it exists and its mtime is newer than the source image. This is definitely not the most accurate as it will not automatically regenerate images if the rules change, but I expect any problems due to this will waste less of my time than regenerating dozens of redundant images every single time the site is compiled.