v2.0.0-rc10

SaschaHeyer/gen-ai-livestreamv2.0.0-rc10Dec 22, 2025by qdm12

AI Summary

This release enhances DNS over TLS performance through connection pooling, introduces a health server configuration option, and fixes various issues regarding TLD classification, logging noise, and IPv6 support. It also includes significant updates to the Go API for `pkg/nameserver` to improve error handling and return types.

Key Highlights

  • Implemented connection pooling for DNS over TLS to improve efficiency.
  • Added `HEALTH_SERVER_ADDRESS` configuration option (defaulting to 127.0.0.1:9999).
  • Updated `pkg/nameserver` Go API: returns `[]netip.Addr` instead of `[]netip.AddrPort` and now returns errors.
  • Fixed TLD classification to ensure 'site' and 'network' are treated as public.
  • Improved IPv6 support on Windows and reduced logging noise for NXDOMAIN responses.

Breaking Changes

  • pkg/nameserver: `GetDNSServers` no longer returns localhost IPs if no nameserver is found, returns an error, and returns `[]netip.Addr` instead of `[]netip.AddrPort`.

New Features

  • DNS over TLS connection pooling
  • HEALTH_SERVER_ADDRESS option
  • REBINDING_PROTECTION_EXEMPT_HOSTNAMES option
  • Filter middleware logs blocked elements with a reason
  • Grafana dashboard updated to schema version 3

Full Release Notes

## Features

- DNS over TLS now uses a pool of connections to re-use TCP connections when possible (#150)
- `HEALTH_SERVER_ADDRESS` option, defaulting to `127.0.0.1:9999`
- by default log i/o timeout errors are logged at debug level because these are fairly common
- `REBINDING_PROTECTION_EXEMPT_HOSTNAMES` option
- `pkg/middlewares/filter`: log blocked elements with a reason

## Fixes

- `internal/local`: "site" and "network" TLDs are public, not local
- `pkg/middlewares/localdns`:
  - do not log request twice on errors
  - do not debug log NXDOMAIN coded responses since these happen often especially with search domains
- `internal/support/ipv6`: handle Windows error message
- Grafana dashboard plain DNS section updated

## Go API breaking changes

- `pkg/nameserver`: `GetDNSServers`
  - does not return localhost IPs if no nameserver is found 
  - returns an eventual error
  - returns []netip.Addr instead of []netip.AddrPort since it can only be an ip address without port

## Maintenance

- Grafana JSON dashboard upgraded to newer schema version 3
- Fix documentation URLs and CI links check
- bump markdownlint from v11 to v21