Generate anchor links for headings

This will generate `id` attributes for all heading levels.  The labels
are generated using steps 1-4 of the gitlab flavored markdown algorithm
which seems to be pretty standard for generating anchors:

A unique ID isn't appended to avoid having to store a list of previous
headers to compare against.
a8c54c1a — mbays 2 years ago
Serve robots.txt disallowing all robots

This overrides any robots.txt file in the proxied gemini capsule, on the
basis that this is intended for gemini robots (which can be expected to
follow the robots.txt companion spec) rather than web robots.

The main purpose though for disallowing web robots is to prevent them
from crawling the proxied cross-site geminispace under /x/, since web
robots won't know even to read the robots.txt files for other capsules
proxied this way.
Add -e flag to place a stylesheet externally rather than loading it inline

By default, kineto loads a stylesheet given to -s from disk and places
it inline with the HTML in a <style>...</style> block.  This patch adds
a -e flag to load a stylesheet externally.  When the -e flag is passed
with a URI (relative or absolute), the given link is placed in the href
of a <link rel="stylesheet"...> tag.  This helps facilitate caching
which can *significantly* reduce request overhead, particularly when the
stylesheet is large (>= the size of the page content).

The given URI is not validated, and if it is invalid the browser will
404 when requesting it and the page will have no style.
Update go-gemini dependency
Implement input prompts on external domains
Use fmt.Fprintf instead of Write and Sprintf
Implement support for "lang" media type parameter
Display an error on charsets other than UTF-8

This prevents the proxy from sending invalid UTF-8 to the client.
Fix relative redirects

Setting next.Host before setting next.Path breaks relative redirects on
external sites, where next.Host != r.URL.Host.
Add support for custom CSS.
Update go-gemini dependency

Version 0.1.13 ensures that (*Response).Body is always non-nil, so that
calling Close() will not panic for unsuccessful responses.
Update go-gemini dependency

Version 0.1.12 fixes a bug where the client Timeout was not applied when
dialing, causing the client to hang when a host was down.
Use POST request to respond to input requests
Fix URLs with legit query strings in them
Implement input and redirect responses
Fix response status switch statement
Update go-gemini dependency
Add dark mode user preference with CSS media query
Reduce li margin to 0.5rem
Add spacing between li's