v0.16.0 — routing stopped being a list
install.sh resolves releases/latest, so the twelve commits since v0.15.0 have been unreachable to moshcode update — including the reason curl <name> still failed after enabling DNS.
Routing stopped being a list
dns install wrote every claimed ending onto one Domains= line. systemd-resolved caps how many search domains it accepts:
| written | 4,586 |
| accepted | 1,090 |
| rejected | 3,496, one journal line each |
systemd-resolved: Failed to add search domain '~zombies', ignoring: Argument list too long
Taken alphabetically, so endings past the cut were configured on disk and absent from the resolver — moshcode dns resolve answered while curl could not, with nothing in between to say why. Every new ending made the cut deeper.
Domains=~. is one entry that never grows. The bridge now forwards anything that isn't a claimed ending upstream, byte for byte, and fails open in every direction: an unknown ending set means "not ours", silent upstreams are SERVFAIL rather than NXDOMAIN, and loopback nameservers are dropped so it can't forward to itself.
moshcode dns status now reports what the resolver accepted, not what was written — the check that had been comparing two numbers we control and agreeing with itself.
Also in this release
- IPv6 end to end — the bridge answers
AAAA, and anAquery for a v6-only name is NODATA rather than NXDOMAIN, which had been denying the name for the whole page load. The/n/gateway brackets v6 hosts, which it previously built as invalid URLs. moshcode template— scaffolds a Moshpit-hosted service;bun-caddy-sqliteandcaddy-staticbundled. Nothing in a template executes on install.- Letters and digits only — a dash was the cheapest way to mint a look-alike of an ending someone else holds, in a namespace one level deep with nothing to appeal into.
- An ending has its own page at
/n/<ending>, showing its pointers and relatives instead of a dead end.
Upgrade
moshcode update # as root
moshcode dns enable # as root