-
v0.0.23
StableGates / package (push) Successful in 47sGates / container (push) Successful in 11sRelease / gates (push) Successful in 12m3sRelease / publish (push) Successful in 5m25sGates / frontend (push) Successful in 2m15sGates / test (push) Successful in 2m47sGates / test-aarch64 (push) Successful in 8m28sGates / package (push) Successful in 6m36sGates / container (push) Successful in 16sCI / gates (push) Successful in 18m14sRelease / guard (push) Successful in 41sGates / frontend (push) Successful in 3m5sGates / test (push) Successful in 3m19sGates / test-aarch64 (push) Successful in 7m45sreleased this
2026-10-20 13:57:09 +00:00 | 41 commits to master since this releaseFixed
- A blackhole route to an upstream no longer stops failover. On a route like that,
connect()fails with an errno the runtime has no name for, and nxdns took it for a fault of its own: the query got SERVFAIL at once, the next upstream was never tried, and nothing was charged to the unreachable one. A connect failure of that kind now counts against that upstream asConnectFailed (cause Unexpected), and the query fails over. - The Overview charts no longer draw the current bucket as a fall in traffic. Every Overview window ends at the end of the bucket that holds the present moment, so its last bucket is still counting. Queries over time draws the curve into it dashed over a fainter fill, and Client activity draws its column faint inside a dashed outline. Both legends name "Still counting", and the tooltip and the chart's data table give that bucket's time as "
- The query detail page names the device. The Client fact showed only the address, while the Activity list showed "iPhone (192.168.50.52)" for the same query. It now uses the list's label. The query log records only the address, so the record's intro says the device name is the one the address has today.
Added
- A NixOS module. The flake exports
nixosModules.default, which addsservices.nxdnswith four options:enable,package,configFileandopenFirewall. It runs the release's ownnxdns.servicewith a drop-in for file mode, checksconfigFilewith the pinned binary'snxdns importat build time so a configuration that does not parse, validate or reconcile fails the build, and restarts the service when only the configuration changes. The flake's package now also installslib/systemd/system/nxdns.service. See "Install nxdns with Nix". nxdns_upstream_local_resource_totalcounts exchanges that ended on this process's own resources (memory, file descriptors, an unnamed system error) before any upstream answered. Until now, such a SERVFAIL left no record of its cause anywhere.
Changed
- The compose file names its own release.
deploy/docker/compose.yamldefaults its image to the release it is tagged with instead of:latest, sodocker compose up -dwith the file from a tag runs that tag's image, and the install and upgrade steps no longer setNXDNS_VERSION. The variable still picks another release, andNXDNS_IMAGEstill names a local image. Compose files fromv0.0.22and earlier keep the:latestdefault. - A DoH upstream that answers with an error status says which. The Diagnostics episode and
/api/healthreadHttpStatus (status 505 HTTP Version Not Supported)instead ofHttpStatus (cause HttpStatus). A 505 is a server that requires HTTP/2, which nxdns does not speak.
Artifacts
255ffa81b09cd84c25e92c699c3b8be59ea2bc287accdca62ed81f5219d852af nxdns-0.0.23-x86_64-linux-musl.tar.gz 563be323c6ef1601c3a547233aa70dcacc384507210aa54d2c7efcf833148055 nxdns-0.0.23-aarch64-linux-musl.tar.gz a680d2fc13ca7723d006c888a82ee10acf7d83f541d6c74deeac0d29993bb87b IMAGE-DIGEST.txtgit.mial.net/mokhtar/nxdns:0.0.23@sha256:7a554696b9649c92e2ead85ebf8a04ce37339ed68e8fe3452f2d3f8bcc3994d1Commits since v0.0.22
9a99890 build: bump version to 0.0.23 4ad7ad6 changelog: date the 0.0.23 section b4ef7b8 website: plan records the approved look, three install tabs and phone screenshots d9d1c1d docs: verify-a-release transcripts elide the signing key's email address f351469 nix: a services.nxdns module that runs the packaged unit in file mode against a configuration the pinned binary accepted aa8c9e2 deploy: the compose file names its own release, and the cut moves it with the version ea9f16a admin: the overview's last bucket is drawn as still counting; the query detail names the device as the activity list does 8efe504 upstream: an unnamed connect errno fails over, local-resource exchanges are counted, doh faults carry the http status 2697adf website: demo household and the admin screenshots it produced 4ef795a docs: config examples use cloudflare doh; quad9 doh needs http/2 and answers 505Downloads
- A blackhole route to an upstream no longer stops failover. On a route like that,