changelog: 0.0.3 releases today
Gates / frontend (push) Successful in 1m3s
Gates / test (push) Successful in 1m39s
Gates / test-aarch64 (push) Successful in 6m28s
Gates / container (push) Successful in 18s
Release / guard (push) Successful in 1m30s
Gates / test-aarch64 (push) Successful in 5m45s
Gates / package (push) Successful in 24s
Release / gates (push) Successful in 7m54s
Gates / package (push) Successful in 5m34s
CI / gates (push) Successful in 14m5s
Gates / frontend (push) Successful in 58s
Gates / test (push) Successful in 1m29s
Gates / container (push) Successful in 10s
Release / publish (push) Successful in 9m12s
Gates / frontend (push) Successful in 1m3s
Gates / test (push) Successful in 1m39s
Gates / test-aarch64 (push) Successful in 6m28s
Gates / container (push) Successful in 18s
Release / guard (push) Successful in 1m30s
Gates / test-aarch64 (push) Successful in 5m45s
Gates / package (push) Successful in 24s
Release / gates (push) Successful in 7m54s
Gates / package (push) Successful in 5m34s
CI / gates (push) Successful in 14m5s
Gates / frontend (push) Successful in 58s
Gates / test (push) Successful in 1m29s
Gates / container (push) Successful in 10s
Release / publish (push) Successful in 9m12s
This commit is contained in:
@@ -10,6 +10,48 @@ subject rarely does.
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
## [0.0.3] - 2026-08-15
|
||||
|
||||
Devices name themselves: the clients table asks the router over reverse DNS
|
||||
instead of waiting for the operator to type every name. The CI container gate
|
||||
also moved from workflow shell into a compiled, tested tool, which fixed a
|
||||
latent temp-directory bug shared with the release tool.
|
||||
|
||||
### Added
|
||||
|
||||
- **Client names learned over reverse DNS.** A client row that carries no
|
||||
hand-typed name gets one from the network: each tracker flush pass takes up
|
||||
to 16 unnamed rows, builds each address's reverse name, matches it against
|
||||
the declared `forward_zones`, and on a match sends one PTR query to that
|
||||
zone's resolver, storing the answer as a *learned* name. This requires a
|
||||
conditional forward zone covering the LAN's reverse space — for example
|
||||
`168.192.in-addr.arpa` pointed at the router; without one, nothing is sent
|
||||
anywhere. A hand-typed name always wins, learned names never appear in
|
||||
`nxdns export` and are never set by `nxdns import`, and each row refreshes
|
||||
once a day (an hour after a failure), so a rename can show stale for up to
|
||||
24 hours. The API's `Client` object gains a `learned_name` field and the
|
||||
clients page shows it.
|
||||
|
||||
### Changed
|
||||
|
||||
- The container CI gate — image build, image-contents assertion against the
|
||||
packaged artifacts, and the startup/shutdown smoke test — moved from
|
||||
workflow shell into `tools/container_check.zig`, compiled and unit-tested by
|
||||
`zig build test` and runnable on a laptop against a local docker daemon.
|
||||
The health probe now runs under a real 60-second deadline (the shell loop's
|
||||
"30 seconds" could stretch past three minutes), and the gate's docker
|
||||
objects carry an ownership label so anything a dead runner leaks is
|
||||
discoverable. The version in CI is parsed from `build.zig.zon` through the
|
||||
zon grammar, once, instead of by two copies of a `sed` regex.
|
||||
|
||||
### Fixed
|
||||
|
||||
- The release tool's temporary-directory claim was not exclusive: the
|
||||
"create" it relied on succeeds on a directory that already exists, so a
|
||||
stale or concurrent directory could be silently adopted, written into, and
|
||||
deleted on exit. Both the release tool and the new container gate now claim
|
||||
their directories exclusively and retry on collision.
|
||||
|
||||
## [0.0.2] - 2026-08-14
|
||||
|
||||
Configuration can now be a file that every boot converges to, filtering gains
|
||||
|
||||
Reference in New Issue
Block a user