DNS Hop v2.1
Polish release on top of v2.0 — a long list of bug fixes, real cross-platform title-bar handling and several missing v1 features brought back.
Highlights
- Custom DNS endpoints are back. Add UDP/TCP, DoH or DoT entries through a proper FluentAvalonia
ContentDialog, persisted to settings. Each resolver row now has an include/exclude checkbox that the benchmark respects, plus a "Remove" button on custom rows. - Sort + filter bars on Resolvers and Results. Sort by Region / Provider / Endpoint / Protocol (Resolvers) or Best / Average / Cached / Uncached / DotCom / Provider / Status (Results), plus No-logs / My-region / Included / Hide-dead / Hide-redirecting / DNSSEC-only / Hide-poisoned chips.
- Apply a profile now actually applies BOTH IPv4 and IPv6 to the active adapter in one elevated call. No more "applied Cloudflare but the system still uses the router via IPv6" leaks.
- Leak test is now honest and provider-agnostic. Compares the IPs you applied via DNS Hop (from apply history) against the resolver
nslookupis currently using, with/24IPv4 and/48IPv6 anycast tolerance — no more "always says leak detected" when you applied something other than Cloudflare. - Active resolver card no longer says "UnKnown". Falls back to a metadata lookup by IP, then to the bare address.
Benchmark
- New sliding-window ETA — converges within a couple of progress callbacks instead of starting optimistic at 2 min and growing to 20 min as the dead-server tail hits.
- Elapsed counter no longer freezes when you navigate away from the page and come back.
- Concurrency clamp lowered from 64 to 32. The previous ceiling could exhaust native socket/TLS handles and hard-kill the process.
- Defensive per-server guard so one bad endpoint can't take down the whole run — the offender is logged and surfaced as a Dead result, the other 239 servers keep going.
- Status line now shows
Testing X.X.X.X (847/3120)again, like v1. Live/ ResolversX / Ycounter on the progress card.
UI
- Title bar finally renders correctly on Windows 10 too. Extended client area means the window's content paints all the way to the top edge instead of relying on Win11-only DWM attributes that Win10 ignores. Window drag and double-click-maximize wired back through a bubbled
PointerPressedEventhandler. - ContentDialog for the custom-DNS modal sits on the window overlay layer — proper Win11-style scrim over the full window, no more bleed-through from the sidebar / title bar.
- Process-wide
SetPreferredAppModecall at startup so any future window in the process (FluentAvalonia ContentDialog overlays, etc.) paints in the right theme from frame 1. - Theme switching is instant on the active window via
DWMWA_CAPTION_COLOR+SWP_FRAMECHANGED. - Mica only kicks in when the App theme is set to "System"; Light / Dark use solid window backgrounds so the explicit choice can't be overridden by a system-painted backdrop.
- Settings page: dropped the duplicated Benchmark group (those settings already live on the Benchmark page) and aligned every right-side action to a uniform 220 px width.
- Results page: dropped the "Copy chart as PNG" action.
- Scrollbar sits flush against the window's right edge instead of 40 px in.
Repo / build
scripts/folder for the publish + packaging scripts.assets/folder for the logo PNG/JPG and the bundled public-DNS-resolver INI.- Linux AppImage workflow now also runs on
v*tags, renames the artifact with the tag suffix and attaches it to the matching GitHub Release automatically. - Smoke-tested on Debian 12 / Fedora 41 / Arch via the existing CI matrix.
Assets
DNS-Hop-Setup-v2.1.exe: Windows installerDNS-Hop-Portable-v2.1.zip: portable Windows buildDNS-Hop-AppImage-v2.1-x86_64.AppImage: Linux AppImage