Use a new branch of webmentiond that lets me pull in all webmentions for
all pages in a single JSON response
Before, Hugo would make one request to webmentiond per page to ask for
approved webmentions for that page. Sometimes, it makes two requests
because some pages used to have a different canonical location. In all,
it ended up making over 150 requests within a second or two. Webmentiond
can handle this for now, but this isn't sustainable: page count will
only increase with time. I wanted to have Hugo instead get all
webmentions for all pages in one cached request.
I recompiled webmentiond from
https://github.com/zerok/webmentiond/pull/65, which updates the API to
support admin access keys. The admin API allows pulling in all
webmentions for all pages, instead of pulling them in for one page at a
time.
Doing so requires getting a bearer token, so I had to manage a new CI
secret: the password for getting a token. I get the token in a shell
script (get-token.sh) and write it to a temporary file, then have Hugo
read the token from that file. The shell script gets the password using
either the CI secret (in CI) or using my password manager (on my
workstation).
TODO: support marginalia (mentions with fragments in their targets)
The Tor hidden service does not use TLS, so it doesn't use HTTP/2 or
HTTP/3. Therefore, it can't use Brotli; statically-compressing Brotli
content is just wasted CPU cycles.
- Make xhtml and html alternates the same (we're polygot), cutting
static-compression time in half
- Make axe-ff run on local files, reducing some overhead.
- Replace achecker flags with a config file
- Bring back webhint
- Amend check-whole-site so that it will deploy to staging if all checks
pass, and then run webhint on every staging page.
- I forgot to compress xhtml files. fix that.
- Stylistic change: remove unnecessary brace expansions
- Don't repeatedly append to a file; run commands in a different scope
and write all at once.
Move Nu HTML validator filtering into a shell script:
- Return a bad exit code if validation errors are found after filtering
- Remove null-ish values from the JSON output; the final output *should*
be an empty string, since nothing should be reported.
- Remove XHTML content-type meta header from HTML documents, reverting
back to the meta charset
- Give XHTML documents their own XHTML declaration
- Remove now-redundant meta charset from XHTML
- Since XHTML and HTML documents differ now, compress after running
xhtmlize and make xhtmlize only act on uncompressed files.
- Validate XHTML using vnu
The site now has polygot markup and can handle both XHTML5 and HTML5
parsing rules. My staging site will be XHTML but my main site will be
HTML5, just in case of parse errors.
If other tools (e.g. LightHouse) end up supporting XHTML5, I'll consider
switching the content-type to XHTML.
Make it possible to build the tilde, staging, production, and onion
sites in parallel. Lint the staging site before deploying it.
Also make these bmake-compatible so I can use bmake instead of gmake.
- Add lint using local installation of the Nu HTML Validator and some
jq-based filtering of false positives
- Move linter configs to directory, to de-clutter the repo
Increased font size to decrease chars-per-line (SC 1.4.8) and increase
tap target size.
Pad the nav links more and add some extra space between them to meet SC
2.5.5.
- Goldmark 1.4.12 switches footnotes from a <section> to a <div>; update
regexes and stylesheet to account for this.
- Goldmark 1.4.12 allows multiple footnotes with the same reference; use
that.
- Clean up templates for unminified output. Also delete an unused class.
- Switch to unminified output by default.
Visitors can see that on post update dates; I can see that in
builds.sr.ht.
This results in not having to upload every page on a trivial change. Add
the "-c" rsync flag to take advantage of that. Doing so should also
result in longer-lived cached copies, with etags and last-modified
headers.