changelog: 0.0.2 releases today
Gates / frontend (push) Successful in 1m9s
Gates / test (push) Failing after 12m32s
Gates / test-aarch64 (push) Successful in 9m14s
Gates / package (push) Successful in 7m27s
Gates / container (push) Successful in 18s
CI / gates (push) Failing after 22m41s
Gates / frontend (push) Successful in 1m9s
Gates / test (push) Failing after 12m32s
Gates / test-aarch64 (push) Successful in 9m14s
Gates / package (push) Successful in 7m27s
Gates / container (push) Successful in 18s
CI / gates (push) Failing after 22m41s
This commit is contained in:
@@ -10,6 +10,13 @@ subject rarely does.
|
|||||||
|
|
||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
|
|
||||||
|
## [0.0.2] - 2026-08-14
|
||||||
|
|
||||||
|
Configuration can now be a file that every boot converges to, filtering gains
|
||||||
|
regex rules and honors blocklist exception lines, and two refresh bugs that
|
||||||
|
silently kept stale state are fixed. Note the three breaking changes below if
|
||||||
|
you script against `nxdns import` or run with `--config`.
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|
||||||
- **Declarative configuration for IaC.** `nxdns run --config=<file>` makes the
|
- **Declarative configuration for IaC.** `nxdns run --config=<file>` makes the
|
||||||
@@ -24,6 +31,26 @@ subject rarely does.
|
|||||||
configuration rows, names the tables and counts, and applies it only with
|
configuration rows, names the tables and counts, and applies it only with
|
||||||
the new `--allow-delete` flag. Additive and edit-in-place imports need no
|
the new `--allow-delete` flag. Additive and edit-in-place imports need no
|
||||||
flag.
|
flag.
|
||||||
|
- **Regex rules.** Rules gain a third kind, `regex`, beside `exact` and
|
||||||
|
`wildcard`, for per-group allow and block patterns such as `^ad[0-9]+-`. The
|
||||||
|
engine is homegrown and linear-time by construction, so no pattern can make
|
||||||
|
matching blow up; backreferences and lookaround do not exist, and a bad
|
||||||
|
pattern is refused at insert time with the limit it hit. Matches appear in
|
||||||
|
`/api/lookup` and the query log as `rule_allow_regex` / `rule_block_regex`.
|
||||||
|
Regex still comes only from you: regex lines in downloaded lists stay
|
||||||
|
counted and skipped.
|
||||||
|
- **Blocklist exception lines are honored.** An Adblock-Plus `@@||name^` line
|
||||||
|
in a downloaded list now lifts that name — and its subdomains — out of what
|
||||||
|
the attached lists block. Exceptions sit below every rule you wrote: a
|
||||||
|
downloaded list can reopen only a hole another downloaded list dug, never
|
||||||
|
override an operator decision. Each source reports how many it carried.
|
||||||
|
- **Browser-only lines are counted where you can see them.** Every source now
|
||||||
|
reports how many of its lines nxdns skipped as syntax with no DNS meaning —
|
||||||
|
cosmetic filters, `$`-modifier rules — beside the existing skipped-regex
|
||||||
|
count. Both blocklist tables show the number and the UI explains the
|
||||||
|
difference: a list whose skipped-unsupported count dwarfs its domain count
|
||||||
|
is written for browser extensions, and its DNS or hosts variant will block
|
||||||
|
more. Previously such a list compiled to almost nothing and looked clean.
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
@@ -49,6 +76,29 @@ subject rarely does.
|
|||||||
- `nxdns import --force` is renamed `--allow-delete`.
|
- `nxdns import --force` is renamed `--allow-delete`.
|
||||||
- A fresh install no longer seeds from `/etc/nxdns/config.zon` by presence.
|
- A fresh install no longer seeds from `/etc/nxdns/config.zon` by presence.
|
||||||
Use `nxdns import` once, or run in file mode with `--config`.
|
Use `nxdns import` once, or run in file mode with `--config`.
|
||||||
|
- The admin UI's internals moved to TypeScript 7 and replaced Tailwind with
|
||||||
|
StyleX and React Aria. The visible change is small: selects are real
|
||||||
|
widgets with working keyboard focus; everything else renders as before.
|
||||||
|
- The `config.db` schema is a single baseline definition again; numbered
|
||||||
|
migration steps start accumulating at v0.1.
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- **A list switching a name between its exact and wildcard forms never took
|
||||||
|
effect.** The compiled-list checksum hashed the exact and wildcard bodies as
|
||||||
|
one unseparated byte stream, so a list carrying `a.example` and the same
|
||||||
|
list carrying `*.a.example` produced the same digest, and the refresh kept
|
||||||
|
the old compiled files. The checksum now separates the bodies. Every source
|
||||||
|
recompiles once on its first refresh after the upgrade; no re-download of
|
||||||
|
unchanged content is forced beyond the refresh's normal fetch.
|
||||||
|
- **A refresh could store stale skip counts.** When a refresh found the list
|
||||||
|
content unchanged, it wrote the previously stored skip counters back to the
|
||||||
|
database while showing the fresh ones in the UI, and the next restart
|
||||||
|
reverted the numbers to the stale copy. All counters now persist from the
|
||||||
|
fresh compile.
|
||||||
|
- An Adblock-Plus entry with embedded whitespace
|
||||||
|
(`||good.example bad.example^`) compiled into an entry no query could ever
|
||||||
|
match. Such lines are now counted as unsupported instead.
|
||||||
|
|
||||||
## [0.0.1] - 2026-08-09
|
## [0.0.1] - 2026-08-09
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
.{
|
.{
|
||||||
.name = .nxdns,
|
.name = .nxdns,
|
||||||
.version = "0.0.1",
|
.version = "0.0.2",
|
||||||
.minimum_zig_version = "0.16.0",
|
.minimum_zig_version = "0.16.0",
|
||||||
.paths = .{""},
|
.paths = .{""},
|
||||||
.fingerprint = 0x3307b311dded1d91,
|
.fingerprint = 0x3307b311dded1d91,
|
||||||
|
|||||||
Reference in New Issue
Block a user