feat: make the capsule subscribable over Gemini

Link labels in every capsule index are now ISO 8601 and lead with the date,
which is what Gemini's subscription convention reads a feed entry from: the
first ten characters of a label must parse as YYYY-MM-DD or the line is
ignored. The board's `09 Oct 26` parsed as nothing, so the front page, the
archive and all six areas registered zero entries and the capsule was
invisible to every aggregator in Geminispace. `/archive` now carries 36.

The Connect page advertised `/feeds/all.rss.xml` and `/feeds/all.atom.xml`,
which exist only in the HTML build and 404 over Gemini. That paragraph now
sits behind an itsybitsy `only html` format gate, with prose outside it that
is true on both faces. The gate can only cut that way round: Pelican does not
implement the directive and renders it as an inert comment, so a gate
subtracts from the capsule and never from the site.

Also adds dormant `SMOLNET_COMMENTS` support, for a per-article thread link
gated to the text formats. Off until kapara is deployed, since setting it
would put a dead link under every article.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
randogoth 2026-10-09 17:19:50 +03:00
parent 17f3a4e79e
commit 9817e7190c
3 changed files with 69 additions and 4 deletions

View file

@ -37,12 +37,27 @@ SMOLNET_SECTION_ORDER = BBS_AREAS
SMOLNET_LABELS = {
'sections': 'Message areas', 'latest': 'Latest messages',
'archive': 'All messages', 'back': 'Main menu', 'pages': 'System',
'comments': 'Replies',
}
# The address is rot13 in the HTML because of web crawlers. That defence needs
# JavaScript, which Gemini does not have, and the renderer drops raw HTML, so
# without this the one thing the Connect page exists to carry would vanish.
SMOLNET_ROT13_ATTR = 'data-r'
# The capsule's half of the replies box, off until kapara is deployed. Setting
# it puts a Replies link under every article in the capsule, so it must not be
# switched on before something answers Gemini on the other end.
#
# When it lands: kapara gateways this same remark42 instance, and remark42 keys
# a thread by the article's canonical web URL, which bbs.js builds as origin +
# pathname. So kapara has to run with `-page-url 'https://randogoth.com/%s.html'`
# and `-site randogoth`, or the capsule opens a second, empty thread under every
# article instead of joining the one that is there. Port 1966, not the default:
# stunnel owns 1965 in front of itsybitsy, and kapara has to terminate its own
# TLS because Gemini client certificates are its identity mechanism.
#
# SMOLNET_COMMENTS = 'gemini://comments.randogoth.com:1966/c/{slug}'
# Articles live flat in content/; assets are carved out of that.
ARTICLE_PATHS = ['']
ARTICLE_EXCLUDES = ['pages', 'library', 'images', 'files']