Skip to content

v0.1.0

Choose a tag to compare

@github-actions github-actions released this 30 May 14:12
· 96 commits to main since this release

[0.1.0] - 2026-05-30

Added

  • app: Scaffold lib+bin crate, module layout & error strategy- config: Add clap CLI and typed Config with flag>env>default- telemetry: Add tracing subscriber init and startup line- app: Add runtime harness with graceful shutdown- codec: Add bounds-checked wire reader/writer and framing- codec: Add Name type, QNAME codec and bounded RR name-skip- codec: Add 12-byte header codec with typed flags- codec: Add shallow message parse with defensive validation- codec: Add bounded TTL scan for response caching- codec: Add EDNS/OPT-aware response synthesis- storage: Add sqlx SQLite connection pool with migrations- storage: Add schema DDL migration for v0.1 config tables- storage: Add idempotent seed-defaults migration- storage: Add settings & upstreams repositories- storage: Add blacklist, allowlist & local-records repositories- storage: Add blocklist-source & offline-cache repository- resolver: Add arc-swap MatchSet primitive- resolver: Add local-record matcher with wildcard suffix-probe- resolver: Add moka raw-bytes cache with serve-from-cache patching- resolver: Add ResolverState bundle with startup hydration- upstream: Add hickory 0.26 transport clients (UDP/TCP/DoT/DoH)- upstream: Forward queries and extract raw bytes + negative TTL- upstream: Add pool with random selection and failover- pipeline: Add request/response model and tower service shape- pipeline: Add decision stack (SPEC §5 match precedence)- pipeline: Add forward + cache-store inner service- pipeline: Add protective tower middleware (rate limit, concurrency, timeout)- telemetry: Add query event, live-log buffer, and runtime stats- pipeline: Add UDP/TCP listeners with SO_REUSEPORT pool and drain- pipeline: Wire the full DNS engine and add end-to-end tests- blocklist: Add HTTP fetcher with conditional requests- blocklist: Parse hosts and domain-list formats into Name sets- blocklist: Aggregate per-source sets and atomically swap them in- blocklist: Add background refresh scheduler and offline start- web: Add axum skeleton, AppState, embedded assets & base layout- web: Add Argon2id auth, session repos, and login/logout- web: Add CSRF protection on mutating routes- web: Add first-run wizard for the initial admin account- web: Add dashboard with runtime stats and blocklist size- web: Add live query log over SSE with filtering- web: Add one-click list management from the live log- web: Add blacklist/allowlist + local DNS record screens- web: Add upstream resolver + settings screens- web: Add blocklist source management + manual refresh- web: Hide custom IP inputs unless blocking mode is Custom- app: Surface bound addresses and lock in full-stack assembly

CI

  • Add GitHub Actions workflow and local git hooks- storage: Commit sqlx offline cache and verify offline build- release: Add tag-triggered release workflow skeleton + version gate- release: Build Linux binaries and cut a changelog'd GitHub Release- release: Publish to crates.io on tag + packaging guard in CI- release: Build and push a multi-arch Docker image to ghcr.io

Changed

  • config: Split clap Cli into its own cli module- storage: Use reversible, timestamped migrations- pipeline: Extract the cache as a read-through tower layer- storage: Type admin user role as an enum- web: Use Argon2::default() instead of explicit params- web: Move auth behavior onto types- web: Move wizard handlers and outcome category onto types- web: Make query-log actions outcome-driven, not stateful- resolver: Convert upstream_config_from_row to TryFrom- Consolidate triplicated now_epoch into time::Clock- resolver: Classify rejections via an extension trait- resolver: Move cache/message byte ops onto their types- resolver: Group DNS serve loops under a ServeLoop type- Adopt mod.rs module layout

Documentation

  • Verify quickstart, sync SPEC, seed CHANGELOG + deploy examples- Add shell & tooling guidance to CLAUDE.md- Document the release process, secrets, and install paths

Fixed

  • web: Open the live SSE stream with data-init, not data-on-load- web: Make one-click log actions work + add toggle feedback- web: Display domains without the canonical trailing dot- web: Strip trailing dot on local DNS record names too

Testing

  • codec: Add cargo-fuzz targets and capture fixtures- upstream: End-to-end integration tests with a mock upstream- e2e: Add full-stack scenario suite driving the assembled binary