-
v0.0.14
StableGates / frontend (push) Successful in 1m47sGates / test (push) Successful in 2m32sGates / test-aarch64 (push) Successful in 8m30sGates / package (push) Successful in 4m37sGates / container (push) Successful in 10sCI / gates (push) Successful in 29m58sRelease / guard (push) Successful in 34sGates / frontend (push) Successful in 1m43sGates / test (push) Successful in 2m26sGates / test-aarch64 (push) Successful in 7m42sGates / package (push) Successful in 59sGates / container (push) Successful in 14sRelease / gates (push) Successful in 11m28sRelease / publish (push) Successful in 7m4sreleased this
2026-08-28 16:48:03 +00:00 | 0 commits to master since this releaseSchema changes stop costing you your query history. querylog.db is now version-stamped and migrated in place; the server refuses to start rather than ever reset a healthy file, and the release tooling refuses to ship a schema change that is neither migratable nor explicitly disclosed with recovery steps. Three releases (0.0.6, 0.0.9, 0.0.12) each discarded the log on upgrade; this ends that.
Changed
- querylog.db is migrated in place. The file now carries a schema version, and a release that changes the schema ships a migration that runs at startup: one consistent backup (
querylog.db.pre-migrate-<timestamp>, mode 0600, only the most recent kept), then every step and the version stamp in a single transaction. A failure before the commit rolls back and leaves your file exactly as it was. - The server refuses instead of resetting. A querylog.db it cannot use — newer than the binary, older than 0.0.12, or mid-migration failure — is left untouched and the server exits with a clear message instead of setting the file aside and starting an empty log. The exit code (2) tells systemd not to restart-loop a deliberate refusal. Corruption is the only case that still sets a file aside automatically.
- The release gate now enforces the contract. A schema change cannot be tagged unless it either ships a working migration (proven in CI against a frozen fixture of the previous schema, with shipped migration files locked byte-for-byte once released) or explicitly declares a break — which requires a version bump the server refuses on, a reset disclosure, and step-by-step restore instructions in this file.
One hazard to know when downgrading. The first start under this release restamps querylog.db from the old fingerprint to version 1 (contents untouched). If you later downgrade to 0.0.13 or older, that binary treats the new stamp as a schema mismatch, moves your file aside as
querylog.db.schema-changed-<timestamp>, and starts an empty log. To recover: return to 0.0.14 or newer, stop the server, move the emptyquerylog.dbaway and delete itsquerylog.db-walandquerylog.db-shmfiles (leaving them would corrupt the restored file), rename the.schema-changed-<timestamp>file back toquerylog.db, and start.Artifacts
c57d4c625a0f902e781c380cd08f13a2b1a4c64c5e8011d066708edfd46a3c65 nxdns-0.0.14-x86_64-linux-musl.tar.gz 5b62a76fa85881ea48735ad2e6820f6759d6b9a10ad3913a07875dd0c44aa95d nxdns-0.0.14-aarch64-linux-musl.tar.gz 4df7ddbba563c8a89cecd61d73641522abed6f4fd4e14917dfe62a60a1c145a7 IMAGE-DIGEST.txtgit.mial.net/mokhtar/nxdns:0.0.14@sha256:200f2a37d001a95d28850972911e8c3e31d7f8772ef41bcfaf6997e3532fb221Commits since v0.0.13
8cc85b4 build: bump version to 0.0.14 0f01c2f storage: version querylog.db and migrate it in place, never reset a healthy fileDownloads
- querylog.db is migrated in place. The file now carries a schema version, and a release that changes the schema ships a migration that runs at startup: one consistent backup (