• v0.0.6 377f00a35f

    v0.0.6
    Release / guard (push) Successful in 22s
    Gates / frontend (push) Successful in 1m30s
    Gates / test (push) Successful in 1m50s
    Gates / frontend (push) Successful in 1m9s
    Gates / test-aarch64 (push) Successful in 6m55s
    Gates / test (push) Successful in 1m34s
    Gates / test-aarch64 (push) Successful in 6m9s
    Gates / package (push) Successful in 3m49s
    Gates / package (push) Successful in 32s
    Gates / container (push) Successful in 15s
    CI / gates (push) Successful in 21m28s
    Gates / container (push) Successful in 9s
    Release / gates (push) Successful in 20m7s
    Release / publish (push) Successful in 4m26s
    Stable

    mokhtar released this 2026-08-17 16:49:01 +00:00 | 72 commits to master since this release

    The period picker now scopes the whole dashboard. The upstream table was the last widget that ignored it, and fixing that meant recording upstream outcomes over time instead of counting them since boot. Read the query-log note below before you upgrade.

    Added

    • Four metrics for the new upstream-history recorder: nxdns_upstream_history_flushes_total, nxdns_upstream_history_flush_failures_total, nxdns_upstream_history_rows_dropped_total and the nxdns_upstream_history_pending gauge. While a flush to the database keeps failing, GET /api/health reports degraded; it recovers on the next flush that succeeds.

    Changed

    • Upstream health answers for the selected period. The dashboard's upstream table used to print counters accumulated since process start beside a success rate taken over the last 32 exchanges, which is how "63 failures" and "100.0% success rate" ended up in the same row under a period picker that scoped nothing there. Every upstream outcome is now aggregated into its wall-clock minute and written to querylog.db, and GET /api/upstream/health?period=… serves the selected window: attempts, failures, success rate, and the last failure with its error name, all inside the period, from 31 days of history. A window with no attempts reports no success rate at all instead of a perfect one, and the table shows an em-dash. The in-memory health state that drives failover and backoff is unchanged, as are its /metrics series.
    • GET /api/upstream/health changed shape. Gone from each upstream: consecutive_failures, total_successes, total_failures, the last-32 success_rate, last_error and last_error_age_s. Each upstream keeps url, enabled and available and gains a period object with the ranged numbers; the body gains period, since, until and a complete flag that says whether any outcome was known to be dropped inside the window. The removed counters are still exported by /metrics under their existing names. On the dashboard the "Right now" section is gone with them: the upstream table rejoined the ranged part of the page, and the disk card, the one live widget left, is titled "Storage now".
    • The query log is recreated on upgrade. Recording upstream history added two tables to the querylog.db schema, and its fingerprint check refuses a database that does not match the shipped definition. On first start this version renames the existing querylog.db aside as querylog.db.corrupt-<unix seconds> in the data directory and creates a fresh one, so query history and stats restart empty. The renamed file is left in place rather than deleted, so removing it is your call. config.db is untouched: no configuration is lost.

    Artifacts

    9688a59a5307429e893bb6cde2cf965cf44721d609971fe67b7e73f91003a7e1  nxdns-0.0.6-x86_64-linux-musl.tar.gz
    95a4d702da2eec905673205102d6787275d0ff7dc3031aa23304659bca89ee9f  nxdns-0.0.6-aarch64-linux-musl.tar.gz
    6dade19c7693084ab7ddd0af2e5643fb64ed2597b452c3b6e5ee089aeb2e3ce3  IMAGE-DIGEST.txt
    
    git.mial.net/mokhtar/nxdns:0.0.6@sha256:20076be836bc13a56e0a14cf3b9f5ca829ba41f9051ad2c66b2afdf95ce2cca4
    

    Compare v0.0.5...v0.0.6

    Commits since v0.0.5
    377f00a changelog: 0.0.6 releases today
    e0a7cd8 milestone 26: upstream health answers for the selected period
    
    Downloads