Release 0.2.0: DNS rebinding protection, dnscrypt-proxy over DoH support, DNS stamps generator, Query logs card expansion & block reasons - #215
Merged
Conversation
MaciejTe
commented
Jul 30, 2026
Collaborator
- chore(tests): add pytest/ruff config, gate failover suite, pin ipv6-test.com, drop obsolete password workaround
- test(e2e): add DNSLib.wait_until polling to close the Redis master/replica propagation race
- chore(tests): rename integration-test mentions to backend E2E tests
- test(e2e): add stack readiness gate, account teardown, state isolation, and centralized test settings
- test(e2e): introduce ProfileSession facade, unify constants and provisioning, dedupe assertions
- refactor(e2e): Move generate_complex_password to libs/
- test(e2e): machine-parseable tableRef annotations, skip-compose flag, failover polling
- test(e2e): run Redis failover tests as a dedicated CI step
- feat(app): Expand Query Logs card
- chore(app): Improve badges positioning
- feat(proxy): Read EDE codes to identify DNSSEC validation errors
- feat(app): Query Logs visual deduplication
- fix(app): Show single time for one-second consolidated log groups
- fix(app): Cap consolidated query-log group time span at 10s
- test(e2e): Fix flaky tests
- perf(proxy): optimize subdomain checking by building candidates incrementally
- Enhance after Copilot feedback.
- perf(proxy): Skip redundant full-FQDN re-check in subdomain loop
- test(proxy): Add benchmarks for subdomain candidate building
- feat(app): Link login screen logo to landing page
- fix(app): Un-clip search input focus ring on Blocklists page
- fix(app): Un-clip search and filter focus rings on Logs page
- fix(app): Stop animating mobile header on scroll reflows
- fix(app): Stack delete-profile danger card on narrow screens
- fix(app): Make tooltips toggle on tap for touch devices
- fix(app): Constrain Edit Profile modal width and stack danger card
- fix(app): Rework mobile header: sticky, edge-to-edge, theme-aware boundary
- fix(app): Separate IP copy and tooltip tap zones on Setup page
- feat(libs): shared dohpath constant, dnsstamps implementation; proxy consumes dohpath
- feat(api): POST /api/v1/dnsstamp returns DoH/DoT/DoQ sdns:// strings per profile
- feat(app): Add DNS Stamp tab in Routers guide
- test(e2e): DNS stamps tests
- tests(app): Fix Playwright tests
- test(e2e): Fix cert location
- docs(faq): Add DNS stamps info
- test(e2e): Update CA cert location to the new one
- fix(app): Keep query-log cards visible during auto-refresh
- test(e2e): Poll last-step position in setup-guide-scroll to tolerate late reflows
- feat(app): Refresh UI after deployments via service worker update flow
- fix(app): Address PR review comments and style Refresh toast action in modDNS teal
- fix(app): Detect deploys on Safari/iOS via version.json poll and reload reliably on SW activation
- chore(app): Trigger update checks on SPA navigation and trim images from SW precache
- fix(app): Make blocklists Enable-listed button toggle to disable-all when all filtered lists are enabled
- fix(app): Suppress version-poll toast while SW install is in flight to avoid double prompt
- feat(app): dnscrypt-proxy setup guides (Routers + Linux)
- test(e2e): verify dnscrypt-proxy over DoH resolves per-profile
- feat(app): clarify DNS Stamps section titles
- feat(api): add per-profile DNS rebinding protection setting
- feat(proxy): block DNS rebinding via IP-phase filter (tier 150)
- feat(app): add DNS rebinding protection toggle to Security tab
- fix(proxy): read rebinding toggle with ParseBool (go-redis stores bool as "1")
- test(e2e): cover DNS rebinding protection end-to-end
- fix(app): render Rebinding protection block-reason chip in query logs
- feat(api): round-trip rebinding protection toggle through profile export/import
- test(e2e): Add DNS rebinding protection check in backend E2E test
- test(api): enforce profile-model export parity with reflection guardrails
- feat(proxy): classify query-log resolution outcomes (nodata, timeout, upstream errors)
- feat(app): pair query types with outcomes in consolidated log rows
- fix(app): distinct outcome chips, honest reason labels, group-scope reasons in query logs
- chore(app): Display QL card properly on hover/expansion
- chore(app): Always display occurrences in QL card
- fix(blocklists): swap blp_fakenews source to maintained StevenBlack fakenews list
- feat(app): amber 'No answer' micro-label on collapsed query-log cards for unanswered outcomes
- chore(tests): add broken.test blackholed zone to knot configs for unanswered-outcome testing
- feat(app): show subtle rdns-600 hover outline on query-log cards in dark mode
- feat(app): persistent rdns-600 outline on open query-log cards, subtle dark-mode variant
- docs(readme): fix recursor stack, versions, setup steps, architecture diagram, and feature list
…est.com, drop obsolete password workaround Signed-off-by: Maciek <tomczukmaciej@gmail.com>
…plica propagation race Signed-off-by: Maciek <tomczukmaciej@gmail.com>
Signed-off-by: Maciek <tomczukmaciej@gmail.com>
…n, and centralized test settings Signed-off-by: Maciek <tomczukmaciej@gmail.com>
…sioning, dedupe assertions Signed-off-by: Maciek <tomczukmaciej@gmail.com>
Signed-off-by: Maciek <tomczukmaciej@gmail.com>
… failover polling Signed-off-by: Maciek <tomczukmaciej@gmail.com>
Signed-off-by: Maciek <tomczukmaciej@gmail.com>
E2E tests improvements
Signed-off-by: Maciek <tomczukmaciej@gmail.com>
Signed-off-by: Maciek <tomczukmaciej@gmail.com>
Signed-off-by: Maciek <tomczukmaciej@gmail.com>
Expand query logs cards
Signed-off-by: Maciek <tomczukmaciej@gmail.com>
Signed-off-by: Maciek <tomczukmaciej@gmail.com>
Signed-off-by: Maciek <tomczukmaciej@gmail.com>
…te-logs Consolidate sequential duplicate logs
Signed-off-by: Maciek <tomczukmaciej@gmail.com>
test(e2e): Fix flaky tests
…mentally Replace O(n²) strings.Join in loop with O(n) incremental string building. For domains with many subdomains (e.g., a.b.c.d.e.com), this reduces string operations from n*(n+1)/2 to n. Before: strings.Join(parts[i:], ".") in loop creates n+(n-1)+...+1 operations After: Build strings incrementally by prepending parts: n operations
Signed-off-by: Maciek <tomczukmaciej@gmail.com>
Signed-off-by: Maciek <tomczukmaciej@gmail.com>
perf(proxy): optimize subdomain checking with incremental string building
Signed-off-by: Maciek <tomczukmaciej@gmail.com>
Signed-off-by: Maciek <tomczukmaciej@gmail.com>
Signed-off-by: Maciek <tomczukmaciej@gmail.com>
Signed-off-by: Maciek <tomczukmaciej@gmail.com>
Signed-off-by: Maciek <tomczukmaciej@gmail.com>
dnscrypt-proxy over DoH support
Signed-off-by: Maciek <tomczukmaciej@gmail.com>
Signed-off-by: Maciek <tomczukmaciej@gmail.com>
Signed-off-by: Maciek <tomczukmaciej@gmail.com>
…l as \"1\") Signed-off-by: Maciek <tomczukmaciej@gmail.com>
Signed-off-by: Maciek <tomczukmaciej@gmail.com>
…ort/import Signed-off-by: Maciek <tomczukmaciej@gmail.com>
Signed-off-by: Maciek <tomczukmaciej@gmail.com>
…ails Signed-off-by: Maciek <tomczukmaciej@gmail.com>
… upstream errors) Signed-off-by: Maciek <tomczukmaciej@gmail.com>
Signed-off-by: Maciek <tomczukmaciej@gmail.com>
…easons in query logs Signed-off-by: Maciek <tomczukmaciej@gmail.com>
Signed-off-by: Maciek <tomczukmaciej@gmail.com>
Signed-off-by: Maciek <tomczukmaciej@gmail.com>
DNS Rebinding Protection
…akenews list Signed-off-by: Maciek <tomczukmaciej@gmail.com>
… for unanswered outcomes Signed-off-by: Maciek <tomczukmaciej@gmail.com>
…nswered-outcome testing Signed-off-by: Maciek <tomczukmaciej@gmail.com>
fix(blocklists): swap blp_fakenews source to maintained StevenBlack fakenews list
Feat/query logs no answer text label
…ark mode Signed-off-by: Maciek <tomczukmaciej@gmail.com>
…e dark-mode variant Signed-off-by: Maciek <tomczukmaciej@gmail.com>
feat(app): Show query logs card outline on hover and expansion
… diagram, and feature list Signed-off-by: Maciek <tomczukmaciej@gmail.com>
docs(readme): fix recursor stack, versions, setup steps, architecture diagram, and feature list
johnnyburnaway
approved these changes
Jul 30, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.