mokhtar
324704b53f
build: bump version to 0.0.7
Gates / package (push) Successful in 41s
Gates / test (push) Successful in 1m35s
Gates / test-aarch64 (push) Successful in 6m48s
Gates / frontend (push) Successful in 1m22s
Gates / container (push) Successful in 9s
CI / gates (push) Successful in 23m18s
Gates / frontend (push) Successful in 1m8s
Gates / package (push) Successful in 40s
Release / guard (push) Successful in 17s
Gates / test (push) Successful in 1m35s
Gates / test-aarch64 (push) Successful in 6m55s
Gates / container (push) Successful in 9s
Release / gates (push) Successful in 9m23s
Release / publish (push) Successful in 4m26s
2026-08-20 22:34:13 +02:00
mokhtar
addf24f92c
query log batching: one transaction per flush interval, not per query
Gates / frontend (push) Successful in 1m18s
Gates / test (push) Successful in 2m46s
Gates / test-aarch64 (push) Successful in 7m33s
Gates / package (push) Successful in 5m34s
Gates / container (push) Successful in 17s
CI / gates (push) Successful in 16m16s
Gates / frontend (push) Successful in 1m8s
Gates / container (push) Successful in 9s
Release / gates (push) Successful in 9m15s
Release / guard (push) Successful in 19s
Gates / test (push) Successful in 1m34s
Gates / test-aarch64 (push) Successful in 6m46s
Gates / package (push) Successful in 39s
Release / publish (push) Failing after 4m7s
2026-08-20 20:57:11 +02:00
mokhtar
037f209179
milestone 27: diagnostics — operational failures land in one curated log, resolved history purgeable
Gates / frontend (push) Successful in 1m33s
Gates / test (push) Successful in 1m48s
Gates / test-aarch64 (push) Successful in 7m10s
Gates / package (push) Successful in 5m31s
Gates / container (push) Successful in 15s
CI / gates (push) Successful in 14m51s
2026-08-20 20:05:59 +02:00
mokhtar
3dd8214ef2
dashboard: a success rate never rounds up to 100.0% while failures stand
Gates / frontend (push) Successful in 1m27s
Gates / test (push) Successful in 1m53s
Gates / test-aarch64 (push) Successful in 7m7s
Gates / package (push) Successful in 3m57s
Gates / container (push) Successful in 15s
CI / gates (push) Successful in 13m15s
2026-08-19 17:54:02 +02:00
mokhtar
64c0d723a6
querylog: the aside file's name says why, so a schema change is not called corrupt
2026-08-17 20:24:21 +02:00
mokhtar
377f00a35f
changelog: 0.0.6 releases today
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
2026-08-17 18:22:54 +02:00
mokhtar
e0a7cd8a6b
milestone 26: upstream health answers for the selected period
2026-08-17 18:21:56 +02:00
mokhtar
3ed9a57822
changelog: 0.0.5 releases today
Gates / test (push) Successful in 1m44s
Gates / frontend (push) Successful in 1m2s
Gates / test-aarch64 (push) Successful in 5m55s
Gates / package (push) Successful in 28s
Gates / container (push) Successful in 16s
CI / gates (push) Successful in 20m25s
Release / guard (push) Successful in 18s
Gates / frontend (push) Successful in 1m5s
Gates / test-aarch64 (push) Successful in 6m33s
Gates / test (push) Successful in 1m31s
Gates / package (push) Successful in 3m41s
Gates / container (push) Successful in 9s
Release / gates (push) Successful in 19m27s
Release / publish (push) Successful in 5m43s
2026-08-16 23:55:19 +02:00
mokhtar
0601098ab0
admin: drop the learned tag from the query tables
2026-08-16 23:55:10 +02:00
mokhtar
49c7da2381
changelog: 0.0.4 releases today
Release / guard (push) Successful in 26s
Gates / frontend (push) Successful in 1m26s
Gates / test (push) Successful in 1m44s
Gates / frontend (push) Successful in 1m6s
Gates / test-aarch64 (push) Successful in 6m36s
Gates / test (push) Successful in 1m33s
Gates / test-aarch64 (push) Successful in 5m50s
Gates / package (push) Successful in 5m5s
Gates / package (push) Successful in 30s
Gates / container (push) Successful in 15s
CI / gates (push) Successful in 21m58s
Gates / container (push) Successful in 10s
Release / gates (push) Successful in 20m42s
Release / publish (push) Successful in 4m41s
2026-08-16 23:00:41 +02:00
mokhtar
794ea6541f
admin: live and query log pages show client names
2026-08-16 23:00:31 +02:00
mokhtar
ba037c5958
website: plan for the nxdns.sh marketing and docs site
Gates / frontend (push) Successful in 1m8s
Gates / test (push) Successful in 2m5s
Gates / test-aarch64 (push) Successful in 7m1s
Gates / package (push) Successful in 4m3s
Gates / container (push) Successful in 15s
CI / gates (push) Successful in 13m28s
2026-08-16 00:17:58 +02:00
mokhtar
1e97c80f6b
rename web/ to admin/, along with the web-named build and cli identifiers
2026-08-16 00:17:58 +02:00
mokhtar
5b3d1cd65c
docs: unwrap hand-wrapped prose repo-wide
Gates / frontend (push) Successful in 1m2s
Gates / test (push) Successful in 1m38s
Gates / package (push) Successful in 5m5s
Gates / test-aarch64 (push) Successful in 6m30s
Gates / container (push) Successful in 15s
CI / gates (push) Successful in 13m30s
2026-08-15 16:27:36 +02:00
mokhtar
50b8fd5c61
changelog: unwrap hand-wrapped lines, release bodies render newlines as breaks
Gates / frontend (push) Successful in 1m2s
Gates / test (push) Successful in 1m31s
Gates / package (push) Successful in 3m36s
Gates / container (push) Successful in 15s
CI / gates (push) Successful in 11m21s
Gates / test-aarch64 (push) Successful in 5m54s
2026-08-15 13:06:44 +02:00
mokhtar
efbe355070
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
2026-08-15 12:24:05 +02:00
mokhtar
fc60214b3e
ci: the container gate and the version parse move into a compiled tool
2026-08-15 12:24:05 +02:00
mokhtar
3c794b645b
milestone 25: client names learned over reverse dns
Gates / test (push) Successful in 2m58s
Gates / frontend (push) Successful in 3m57s
Gates / test-aarch64 (push) Successful in 8m20s
Gates / package (push) Successful in 7m27s
Gates / container (push) Successful in 17s
CI / gates (push) Successful in 19m9s
2026-08-15 11:18:44 +02:00
mokhtar
c428bc2398
ci: allow dispatching the gate set, a replaced runner pod kills the job it holds
Gates / frontend (push) Successful in 1m18s
Gates / test (push) Successful in 2m27s
Gates / test-aarch64 (push) Successful in 5m39s
Gates / package (push) Successful in 3m34s
Gates / container (push) Successful in 13s
CI / gates (push) Successful in 11m57s
Release / guard (push) Successful in 1m30s
Gates / frontend (push) Successful in 1m6s
Gates / test (push) Successful in 1m28s
Gates / test-aarch64 (push) Successful in 5m41s
Gates / package (push) Successful in 28s
Gates / container (push) Successful in 16s
Release / gates (push) Successful in 7m55s
Release / publish (push) Successful in 10m37s
2026-08-14 02:34:06 +02:00
mokhtar
c7c1e21267
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
2026-08-14 02:10:45 +02:00
mokhtar
21c5ce1f36
filter: separate the compiled bodies in the checksum, a name moving between them was invisible
2026-08-14 02:09:25 +02:00
mokhtar
1bce81eea0
milestone 24: persist and surface the unsupported-line count
2026-08-13 20:44:27 +02:00
mokhtar
21571e448e
schema: collapse config.db to a single baseline, ddl_v1 stays editable until v0.1
2026-08-13 19:14:54 +02:00
mokhtar
2ab7c1f1de
milestone 21: abp list exceptions and a regex rule kind
2026-08-13 19:14:47 +02:00
mokhtar
b340521716
web tests: raise the async query budget, ci contention timed out a suspended page
Gates / test (push) Successful in 1m35s
Gates / test-aarch64 (push) Successful in 6m0s
Gates / frontend (push) Successful in 1m12s
Gates / package (push) Successful in 5m17s
Gates / container (push) Successful in 16s
CI / gates (push) Successful in 13m10s
2026-08-13 00:20:08 +02:00
mokhtar
13458a980e
ci: run the frontend gate on the light runner
Gates / test (push) Successful in 1m37s
Gates / frontend (push) Failing after 3m23s
Gates / package (push) Skipped
Gates / container (push) Skipped
Gates / test-aarch64 (push) Successful in 6m2s
CI / gates (push) Failing after 7m41s
2026-08-12 23:46:07 +02:00
mokhtar
e576704fad
spec milestone 23: record the readme and conversion-order findings as closed by decision
2026-08-12 23:45:34 +02:00
mokhtar
4aaf6d3815
milestone 23: close the remaining codex findings
...
the vitest "something prevents Vite server from exiting" warning was
@stylexjs/unplugin, not our code: configureServer starts a 150ms polling
interval for HMR and clears it from server.httpServer's close event, which
vitest resolves to null in middleware mode. drop that one hook under VITEST
and keep the transform.
textMuted was swept rather than judged. measured against their grounds, the
39 flat text-zinc-500 sites went 4.12:1 -> 7.56:1 in dark mode, repairing a
WCAG AA failure, so that stands; the 4 already-adaptive sites went 7.40:1 ->
4.62:1 in light mode for nothing, so a textSecondary token restores their
original zinc-600/zinc-400 pair.
append the symbol families to the reset's font stack: Select renders U+25BE
and Segoe UI does not carry it.
correct two acceptance criteria that were literally false: both greps match
only comments.
2026-08-12 23:43:22 +02:00
mokhtar
0ea2e2905a
milestone 23: restore the focus ring on select options, check layer order, close preflight gaps
2026-08-12 23:27:28 +02:00
mokhtar
9d5120cbad
milestone 23: put the reset in a cascade layer, guard that it stays there
2026-08-12 23:06:26 +02:00
mokhtar
65f76d4427
milestone 23 s3: plan names stylex and react aria
2026-08-12 22:50:34 +02:00
mokhtar
be12587b87
milestone 23 s3: remove tailwind, replace its preflight with an explicit reset
2026-08-12 22:50:25 +02:00
mokhtar
122044e6af
milestone 23 s3: delete ui/classes.ts, its last importer is gone
2026-08-12 22:46:29 +02:00
mokhtar
0e9433d53b
milestone 23 s3: convert features/queries/QueryLogPage.tsx to stylex
2026-08-12 22:45:53 +02:00
mokhtar
ae9f7fb9f3
milestone 23 s3: convert features/lookup/LookupPage.tsx to stylex
2026-08-12 22:44:23 +02:00
mokhtar
1cd8f71a9b
milestone 23 s3: convert features/dashboard/TimeseriesChart.tsx to stylex
2026-08-12 22:42:11 +02:00
mokhtar
15c895e180
milestone 23 s3: convert features/settings/SettingsPage.tsx to stylex
2026-08-12 22:40:50 +02:00
mokhtar
3b33d7afee
milestone 23 s3: convert features/dashboard/UpstreamHealthTable.tsx to stylex
2026-08-12 22:38:15 +02:00
mokhtar
f2b4582c0a
milestone 23 s3: convert shell/AppShell.tsx to stylex
2026-08-12 22:37:16 +02:00
mokhtar
02bf1ca310
milestone 23 s3: convert features/live/LiveLogPage.tsx to stylex
2026-08-12 22:36:09 +02:00
mokhtar
4379d7599b
milestone 23 s3: convert features/groups/GroupsPage.tsx to stylex
2026-08-12 22:33:58 +02:00
mokhtar
1246791fe1
milestone 23 s3: convert features/dashboard/DiskCard.tsx to stylex
2026-08-12 22:32:56 +02:00
mokhtar
2f3115117f
milestone 23 s3: convert features/blocklists/SourceStatusSection.tsx to stylex
2026-08-12 22:31:14 +02:00
mokhtar
e98896fc0a
milestone 23 s3: convert features/dashboard/DashboardPage.tsx to stylex
2026-08-12 22:30:25 +02:00
mokhtar
1de608f9bc
milestone 23 s3: convert auth/LoginPage.tsx to stylex
2026-08-12 22:28:56 +02:00
mokhtar
38d34453bb
milestone 23 s3: convert features/groups/GroupSourcesEditor.tsx to stylex
2026-08-12 22:28:01 +02:00
mokhtar
368149a358
milestone 23 s3: convert features/blocklists/BlocklistForm.tsx to stylex
2026-08-12 22:27:00 +02:00
mokhtar
ac0699faa1
milestone 23: amend two rulings the s2 review found the code in breach of
2026-08-12 22:26:42 +02:00
mokhtar
d5b351d7fe
milestone 23 s3: convert routes.tsx to stylex
2026-08-12 22:25:56 +02:00
mokhtar
cddefa87e4
milestone 23 s3: convert features/pause/PauseWidget.tsx to stylex
2026-08-12 22:25:08 +02:00
mokhtar
9e12683acf
milestone 23 s3: convert features/dashboard/StatCards.tsx to stylex
2026-08-12 22:23:16 +02:00
mokhtar
0fdbe25f7a
milestone 23 s3: convert features/settings/RestartBanner.tsx to stylex
2026-08-12 22:21:53 +02:00
mokhtar
7e7358b3c2
milestone 23 s3: convert features/settings/ReadOnlyConfigBanner.tsx to stylex
2026-08-12 22:21:13 +02:00
mokhtar
d5c4a8d978
milestone 23 s3: convert lib/InlineError.tsx to stylex
2026-08-12 22:19:59 +02:00
mokhtar
73bc180c67
milestone 23 s3: convert features/dashboard/HealthBanners.tsx to stylex
2026-08-12 22:18:23 +02:00
mokhtar
0f58966b31
milestone 23 s3: move srOnly into the shared style vocabulary
2026-08-12 22:16:58 +02:00
mokhtar
bb39539fdf
milestone 23: correct three comments the s1 review found inaccurate
2026-08-12 22:13:49 +02:00
mokhtar
01e455c8af
milestone 23 s2: react aria primitives and their cluster
2026-08-12 22:12:18 +02:00
mokhtar
994bbf922c
milestone 23 s1: stylex build integration, tokens and shared styles
2026-08-12 21:41:32 +02:00
mokhtar
7b0527d271
milestone 22: typescript 7
2026-08-12 21:30:40 +02:00
mokhtar
c5e6ab9180
spec milestones 22 and 23: typescript 7, stylex and react aria
2026-08-12 21:30:35 +02:00
mokhtar
e3529e4e61
ci: gates build the web bundle and the dist payload once, pass them between jobs
Gates / test (push) Successful in 1m37s
Gates / test-aarch64 (push) Successful in 6m46s
Gates / frontend (push) Successful in 1m6s
Gates / package (push) Successful in 4m4s
Gates / container (push) Successful in 15s
CI / gates (push) Successful in 13m54s
2026-08-12 20:20:30 +02:00
mokhtar
91a0aa92c6
ci: smoke test runs the container in file mode, surface its logs on failure
Gates / test-aarch64 (push) Successful in 5m55s
Gates / test (push) Successful in 1m27s
Gates / frontend (push) Successful in 50s
Gates / package (push) Successful in 3m52s
Gates / container (push) Successful in 2m28s
CI / gates (push) Successful in 14m34s
2026-08-12 00:15:22 +02:00
mokhtar
79a161e73a
spec milestone 21: re-verify anchors against m20, record authority-mode interaction
Gates / test (push) Successful in 1m27s
Gates / test-aarch64 (push) Successful in 5m56s
Gates / frontend (push) Successful in 49s
Gates / package (push) Successful in 3m54s
Gates / container (push) Failing after 2m20s
CI / gates (push) Failing after 14m27s
2026-08-11 23:37:20 +02:00
mokhtar
d76afc147a
milestone 20: declarative configuration for iac
2026-08-11 23:31:40 +02:00
mokhtar
2f29121e27
spec milestone 21: abp list exceptions and operator regex rules
2026-08-11 19:03:58 +02:00
mokhtar
9aa396a65a
spec milestone 20: declarative configuration for iac
2026-08-11 18:49:03 +02:00
mokhtar
929626b1dc
milestone 14: verify-a-release walkthrough run against v0.0.1, acceptance closed
2026-08-09 01:35:43 +02:00
mokhtar
31d8baad15
changelog: 0.0.1 releases today
Release / guard (push) Successful in 1m30s
Release / gates (push) Successful in 14m44s
Gates / test (push) Successful in 1m19s
Gates / test-aarch64 (push) Successful in 4m59s
Gates / frontend (push) Successful in 48s
Gates / package (push) Successful in 5m13s
Gates / container (push) Successful in 2m23s
Release / publish (push) Successful in 53s
2026-08-09 01:01:55 +02:00
mokhtar
3c38e18027
changelog and spec: dry run complete, restore 0.0.1, record deviations 25 and 26
2026-08-08 21:43:36 +02:00
mokhtar
1a82b0491a
release: name the image by the public registry host, not the internal server url
2026-08-08 21:14:37 +02:00
mokhtar
d7f63b9f6e
release: move publication orchestration into tools/release.zig, pin rotated subkey
2026-08-08 20:22:04 +02:00
mokhtar
fbd70e6a70
release: refetch the annotated tag object that checkout replaces
2026-08-08 16:03:04 +02:00
mokhtar
95939fedf0
changelog: temporary 0.0.0 section for the release dry run
2026-08-08 15:35:40 +02:00
mokhtar
75038b61a6
release: pin the artifact-signing subkey fingerprint
2026-08-08 14:44:07 +02:00
mokhtar
004092a7ef
delete TECH_DEBT.md: all 71 findings closed by milestones 15-19
Gates / test (push) Successful in 1m38s
Gates / test-aarch64 (push) Successful in 5m5s
Gates / frontend (push) Successful in 1m26s
Gates / package (push) Successful in 6m43s
Gates / container (push) Successful in 5m30s
CI / gates (push) Successful in 20m24s
2026-08-08 12:39:58 +02:00
mokhtar
cdacc560b7
milestone 14: build, package, sign and publish releases
2026-08-08 12:38:29 +02:00
mokhtar
6c507992e4
milestone 19: hygiene sweep - dead ecs surface, single-source constants, tls classification, frontend state hazards, docker smoke network fix
CI / test (push) Successful in 1m46s
CI / test-aarch64 (push) Successful in 5m30s
CI / frontend (push) Successful in 46s
CI / cross (push) Successful in 8m12s
CI / docker (push) Successful in 3m46s
2026-08-07 20:39:27 +02:00
mokhtar
6f67940995
milestone 18: collapse duplicated infrastructure into shared listener core, crud list helper, resource shells, transport race, name and line helpers, ui modules
CI / test (push) Successful in 1m22s
CI / test-aarch64 (push) Successful in 5m6s
CI / frontend (push) Successful in 45s
CI / cross (push) Successful in 7m53s
CI / docker (push) Failing after 1h10m57s
2026-08-07 18:20:30 +02:00
mokhtar
c50c6d285a
milestone 17: real deadlines, validator holes, upstream editor, trusted proxies, contract samples, badvers
CI / test (push) Successful in 1m22s
CI / test-aarch64 (push) Successful in 4m55s
CI / frontend (push) Successful in 39s
CI / cross (push) Successful in 7m57s
CI / docker (push) Failing after 1h10m42s
2026-08-07 17:55:59 +02:00
mokhtar
9b12dbaaa0
ci: deliver the smoke-test config via docker cp instead of a bind mount
2026-08-07 17:55:56 +02:00
mokhtar
ee342c1e69
ci: create the zig fetch tmp dir the package fetcher assumes
CI / test (push) Successful in 2m4s
CI / test-aarch64 (push) Successful in 6m50s
CI / frontend (push) Successful in 43s
CI / cross (push) Successful in 10m36s
CI / docker (push) Failing after 7m17s
2026-08-07 02:01:24 +02:00
mokhtar
25455e5ae2
milestone 16: behavioral fixes for silent failures, locks, counters and the query log
CI / test (push) Failing after 11s
CI / cross (push) Failing after 25s
CI / docker (push) Failing after 24s
CI / test-aarch64 (push) Failing after 2m22s
CI / frontend (push) Successful in 43s
2026-08-07 01:54:40 +02:00
mokhtar
5802148887
record milestone 15 outcomes in spec and tech debt report
CI / test (push) Failing after 10s
CI / test-aarch64 (push) Failing after 2m23s
CI / frontend (push) Successful in 41s
CI / cross (push) Failing after 25s
CI / docker (push) Failing after 22s
2026-08-07 01:29:16 +02:00
mokhtar
9f8a5cd753
milestone 15: make a green run mean a real pass
CI / test (push) Failing after 1m12s
CI / test-aarch64 (push) Failing after 2m27s
CI / frontend (push) Successful in 1m28s
CI / cross (push) Failing after 27s
CI / docker (push) Failing after 24s
2026-08-07 01:28:13 +02:00
mokhtar
f2898479d4
zig fmt src/safe_url.zig
2026-08-07 01:28:08 +02:00
mokhtar
f47967ec0d
tech debt audit and cleanup specs for milestones 15-19
2026-08-07 00:57:59 +02:00
mokhtar
8c3328562e
milestone 13 discrepancies: redact credentials from urls in logs, metrics and cli output
2026-08-07 00:45:17 +02:00
mokhtar
1ff727feb8
milestone 14 spec: build, package and publish releases
2026-08-05 21:40:16 +02:00
mokhtar
16c9de2414
milestone 13: restructure docs to diataxis, tutorial, every command executed
2026-08-02 18:02:58 +02:00
mokhtar
35f23240e7
fix blocklist fetcher aborting the process on a buffered read
...
CI / test (push) Failing after 48s
CI / test-aarch64 (push) Failing after 2m25s
CI / frontend (push) Successful in 45s
CI / cross (push) Failing after 22s
CI / docker (push) Failing after 18s
the response reader was constructed over transfer_buf and then read into that
same buffer, so readSliceShort memcpy'd the reader's buffer onto itself and
panicked on any read that found bytes already buffered. stream the body
straight into the caller's writer instead: no second copy, no aliasing.
2026-08-02 16:47:14 +02:00
mokhtar
d522b1f947
milestone 12: performance bench harness, measured docs, aarch64 tests under qemu and no-dist size assert
2026-08-02 16:08:23 +02:00
mokhtar
bdb6ffab7a
milestone 11: systemd and docker packaging, operator and architecture docs, config and api reference, docs drift guards
2026-08-02 15:24:10 +02:00
mokhtar
a589df7515
milestone 10: doh and dot listeners, cert store with hot reload and cert reload api
2026-08-02 14:39:18 +02:00
mokhtar
617cc966a2
milestone 9: react spa admin ui, frontend ci and embedded dist
2026-08-02 13:04:09 +02:00
mokhtar
5253c47303
milestone 8: web server, rest api, sse, auth, metrics and static assets
2026-08-02 00:54:13 +02:00
mokhtar
a8092bb1b9
milestone 7: serving pipeline, client tracking, pause and lifecycle
2026-08-01 21:43:52 +02:00
mokhtar
8c50b6617f
milestone 6: dns cache, rate limiting, query logging, disk monitoring and retention
2026-08-01 17:48:12 +02:00
mokhtar
59d94df722
milestone 5: blocklist filtering, local records and conditional forwarding
2026-08-01 16:43:55 +02:00
mokhtar
3baf5d6581
dot upstreams: per-upstream tls_name for sni and cert verification by dns name
2026-08-01 14:38:45 +02:00