Skip to content

Release 0.2.0: DNS rebinding protection, dnscrypt-proxy over DoH support, DNS stamps generator, Query logs card expansion & block reasons - #215

Merged
MaciejTe merged 89 commits into
mainfrom
release/0.2.0
Jul 30, 2026
Merged

Conversation

@MaciejTe

Copy link
Copy Markdown
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

MaciejTe and others added 30 commits July 15, 2026 13:44
…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>
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>
Signed-off-by: Maciek <tomczukmaciej@gmail.com>
…te-logs

Consolidate sequential duplicate logs
Signed-off-by: Maciek <tomczukmaciej@gmail.com>
…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>
MaciejTe added 26 commits July 29, 2026 12:28
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>
…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
…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
@MaciejTe
MaciejTe requested a review from johnnyburnaway July 30, 2026 08:36
@MaciejTe MaciejTe changed the title Release 0.2.0 Release 0.2.0: DNS rebinding protection, dnscrypt-proxy over DoH support, DNS stamps generator, Query logs card expansion & block reasons Jul 30, 2026
@MaciejTe
MaciejTe merged commit a7639b2 into main Jul 30, 2026
21 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants