• v0.0.26
    Gates / frontend (push) Successful in 1m50s
    Site / deploy (push) Successful in 1m48s
    Gates / package (push) Successful in 4m10s
    Gates / test (push) Successful in 2m18s
    Gates / test-aarch64 (push) Successful in 6m5s
    Gates / container (push) Successful in 6s
    CI / gates (push) Successful in 16m36s
    Release / guard (push) Successful in 1m38s
    Gates / frontend (push) Successful in 1m52s
    Gates / test (push) Successful in 2m20s
    Gates / test-aarch64 (push) Successful in 5m30s
    Gates / package (push) Successful in 32s
    Gates / container (push) Successful in 6s
    Release / gates (push) Successful in 8m28s
    Release / publish (push) Successful in 10m58s
    Stable

    mokhtar released this 2026-10-26 11:53:17 +00:00 | 12 commits to master since this release

    Added

    • Clear the DNS cache from the System page. "Clear DNS cache" empties it and says how many answers it removed; POST /api/cache/flush does the same. It works when the configuration comes from a file too. /metrics counts flushes as nxdns_cache_flushes_total and the answers they removed as nxdns_cache_flushed_entries_total.

    Fixed

    • Blocking a CNAME target takes effect on cached answers. A name cached before its CNAME target was blocked, or while blocking was paused, kept resolving until its cached answer expired. Cached answers are now checked against the current blocklists every time they are served.
    • Changing forward zones or upstream servers no longer leaves old answers cached. Adding a forward zone kept serving what the upstream had said about its names, including "no such name", and removing one kept serving the zone's own answers, each until they expired. Adding, editing or removing a local record, a forward zone or an upstream server now empties the cache, and an answer that was still being fetched when it emptied is not stored; /metrics counts those as nxdns_dns_cache_stale_stores_total. Changing an upstream timeout keeps the cache.
    • Updating the blocklists by hand builds them once. "Update now" in the web interface, or POST /api/blocklists/update, rebuilt and published the blocklists a second time right after the refresh had already done so, which cost a second full build and advanced the snapshot generation twice. The scheduled refresh was not affected.

    Artifacts

    ed73a9f9da294e71174fec791acdb1e2354adb85487f881e61d6dcdf7211dc23  nxdns-0.0.26-x86_64-linux-musl.tar.gz
    7e12d7ddbea28d52bc39a34cf0881f3f30607c4cd778212d6ebcc5d6d1a1dcdd  nxdns-0.0.26-aarch64-linux-musl.tar.gz
    6a5f657000ad1a3849da354021b78e0f86753877572d01ac7ca662688ba56366  IMAGE-DIGEST.txt
    
    git.mial.net/mokhtar/nxdns:0.0.26@sha256:c4034cbfed34972e3a2103449f751a5a8b0ec1327deed2444d468e56c9ece726
    

    Compare v0.0.25...v0.0.26

    Commits since v0.0.25
    186ffc2 build: bump version to 0.0.26
    f126379 changelog: date the 0.0.26 section
    4f14cf0 changelog: count the pi's blocklist entries once
    50f4a8c changelog: record the 0.0.25 memory measurement
    9fe5944 specs: record the 0.0.25 memory measurement from the pi
    34a429f dns: clear the cache on request and when local tables or upstream servers change; uncloak cached answers
    2273fda web: a manual blocklist refresh publishes once, since refreshAll already ends in its own reload
    
    Downloads