A message base is a thing people answer, and until now this one could only be read. The site already calls its articles messages in areas, so replies are the feature the metaphor was asking for rather than a comment box bolted onto it. Talks to the comment server's API directly instead of loading its widget. The widget is a React app in an iframe and would arrive with its own fonts, spacing and avatars; an iframe cannot inherit the page's font in any case. Rules are drawn the way the guestbook draws them, padded to exactly 80 cells, so a reply is indistinguishable from any other row on the board. All five pre elements in the section measure 80 in a real browser. Two things this surfaced, both verified by driving a browser rather than curl: The command handler took every letter key as a command, which was harmless when there was nothing on the board to type into. With a message box, typing `i` navigated to the index mid-sentence. It now ignores keys aimed at an input or textarea. bbs.js already says the bracket chrome is a promise rather than decoration, and [P]ost was drawn without wiring P to anything. P now focuses the message box. Handles are checked here as well as at the server, since remark42 wants three or more characters and only letters, numbers, underscores and spaces; failing in the page is better than a refusal with no explanation. Without JS the section is simply absent, which is honest, and the capsule never sees it since Gemini has no way to render it. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> |
||
|---|---|---|
| flux.vision | ||
| plugins | ||
| randogoth.com | ||
| tobias.raayoni-last.com | ||
| .gitignore | ||
| justfile | ||
| README.md | ||
sites
Three domains, one directory each, one audience each.
| Directory | Domain | Subject | Audience |
|---|---|---|---|
flux.vision/ |
flux.vision | Kiritan Flux: media arts, VJ, performance, installations, 2003-2021 | festival and art world |
tobias.raayoni-last.com/ |
tobias.raayoni-last.com | client work, portfolio, CV | clients, employers, galleries |
randogoth.com/ |
randogoth.com | the technical work, six areas | devs, retro and small-net readers |
They were one site until October 2026. The split is the fix: four audiences were being handed one page, and a page that serves four audiences collapses into the only format that can hold unrelated things, which is a dated list.
sublunar.space is deliberately not here. It is a working blog with nine years and 440 commits of
its own voice, and it keeps its own repo.
Building
All three are Pelican, with no shared build. Each stands alone:
cd flux.vision # or tobias.raayoni-last.com, or randogoth.com
uv run --quiet --with pelican --with markdown -- pelican content -o output -s pelicanconf.py
Each directory has its own README covering its theme, its taxonomy and the traps specific to it.
| articles | theme | notes | |
|---|---|---|---|
flux.vision/ |
90 | flux |
recovered from the Wayback Machine; closed, maintained not updated |
tobias.raayoni-last.com/ |
97 | raayoni |
grid of tiles, light and dark |
randogoth.com/ |
41 | bbs |
an ANSI bulletin board, 80 columns; mc-pelican is the fallback |
Deployment
Built and served on bucur. A push triggers a webhook that builds the changed site and rsyncs it
into place. Content does not trigger a system activation: the site derivations are flake packages,
so a typo costs a Pelican run rather than a nixos-rebuild switch.
Shared conventions
- No em dashes. Commas, colons, full stops or
·. - Flat slugs.
{slug}.htmlon all three. Categories get reworked; slugs should not move. - No
nl2br. The recovered bodies are hard wrapped at about 70 characters, so it turns every source line into a forced break. This has been fixed twice; do not add it back. - Lost images are handled at build time, not in the browser. The references stay in the Markdown
because the reference records what was there;
plugins/lostimages.pystrips them from the output. - Check the built output, not the source. Several bugs here were invisible at a glance and obvious to a counter: forced line breaks that fell near the natural wrap, box drawing a column short, a config change that silently emptied every hotkey.
The working material
The inventory, the recovery pipelines, the pruned articles, the source archives and REFACTOR.md
live outside this repo, at /mnt/data/Backup/sites-restructure-2026-10-05/. A clone is the three
sites, not the argument that produced them.
That backup is worth keeping: the sort is not reproducible from the sites alone. inventory.tsv
records why each of 266 articles went where it did, and _pruned/ is the only record of what was
taken out.