Skip to content

Clarify Research mode and preserve tracker reporting - #982

Closed
kasnder wants to merge 4 commits into
masterfrom
claude/ecstatic-tesla-tos3pq
Closed

kasnder wants to merge 4 commits into
masterfrom
claude/ecstatic-tesla-tos3pq

Conversation

@kasnder

@kasnder kasnder commented Oct 7, 2026 •

Copy link
Copy Markdown
Member

Research mode disables tracker blocking even when Strict mode and per-tracker blocking rules are selected. In #968, the attached settings have log_logcat=true: the statistics report allowed connections while Manage App displays the saved blocking rules. The previous transient warning was easy to miss.

This PR adds a persistent notice above the Timeline, Apps, and VPN tabs: “Research mode is on. Tracker blocking is disabled. Tap to change settings.” Tapping opens Settings, and the notice disappears when Research is disabled. The Research preference description also explicitly states that blocking is disabled. Research mode's blocking behaviour is unchanged.

The PR also retains these separate reporting improvements:

  • Every onboarding preset keeps DoT blocking enabled.
  • VPN Private DNS state produces a warning without requiring the traffic log. An event-based listener handles delayed validation, unregisters when no longer needed, and ignores stale callbacks.
  • SNI contacts use the matched CNAME target and retain the shared-IP verdict explanation.

These DNS changes are not the diagnosis of #968: the reporter already had block_dot=true and Secure DNS enabled. The notice addresses the confusion; per-tracker labels still represent saved rules.

Validation:

  • 501 JVM tests passed before the notice change; 10 focused ActivityMain tests passed with the notice.
  • The notice test checks preference changes, placement outside tab content, navigation to Settings, and renders the actual layout at 320dp for inspection.
  • Android lint: 0 errors, 75 warnings (the removed transient warning leaves its old translated string unused).
  • No physical-device verification.

The existing master correction for stale DDG test fixtures is included.

The research preset turned off DoT blocking. With Android's Private DNS on
"Automatic", Android then upgrades to DoT against the resolvers the VPN
advertises, TrackerControl sees no plaintext DNS, and nothing is blocked in
any mode while SNI still records trackers as allowed (#968).

- Keep "Block Android's Private DNS" on in every onboarding preset.
- Warn when Private DNS is active on the VPN network
  (LinkProperties.isPrivateDnsActive), without needing the full traffic
  log. Re-check 30 s after the VPN comes up and after block_dot changes,
  since Android validates DoT asynchronously.
- In SNI attribution, store the tracker name that matched (the CNAME
  target for cloaked trackers) so the timeline and Protection screen find
  the row again, and keep the shared-IP mark that explains why standard
  mode allowed the contact.

Claude-Session: https://claude.ai/code/session_01WgbtBAKqNxgmeXSPtUoXxp
@kasnder
kasnder marked this pull request as ready for review October 8, 2026 14:32
@kasnder kasnder changed the title Keep tracker statistics truthful when DNS goes unseen Clarify Research mode and preserve tracker reporting Oct 23, 2026
@kasnder kasnder closed this Oct 23, 2026
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.

2 participants