Skip to content

Commit ed8b032

Browse files
committed
Merge branch 'master' of github.com:TrackerControl/tracker-control-android
2 parents 05cffcf + d38f1ad commit ed8b032

5 files changed

Lines changed: 37 additions & 26 deletions

File tree

app/src/main/java/eu/faircode/netguard/ActivityMain.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ protected void onCreate(Bundle savedInstanceState) {
153153

154154
// Check Onboarding
155155
SharedPreferences prefsOnboarding = PreferenceManager.getDefaultSharedPreferences(this);
156-
if (!prefsOnboarding.getBoolean("onboarding_complete", false)) {
156+
if (prefsOnboarding.getInt("onboarding_version", 0) < ActivityOnboarding.ONBOARDING_VERSION) {
157157
super.onCreate(savedInstanceState);
158158
startActivity(new Intent(this, ActivityOnboarding.class));
159159
finish();
@@ -519,7 +519,7 @@ public void onDestroy() {
519519

520520
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
521521
if (Build.VERSION.SDK_INT < MIN_SDK || Util.hasXposed(this) || !Util.canFilter(this)
522-
|| !prefs.getBoolean("onboarding_complete", false)) {
522+
|| prefs.getInt("onboarding_version", 0) < ActivityOnboarding.ONBOARDING_VERSION) {
523523
super.onDestroy();
524524
return;
525525
}

app/src/main/java/eu/faircode/netguard/ApplicationEx.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,8 +119,18 @@ public void onCreate() {
119119
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O)
120120
createNotificationChannels();
121121

122-
// Migrate old strict_blocking pref to blocking_mode
122+
// Migrate onboarding_complete boolean to onboarding_version int
123123
android.content.SharedPreferences prefs = androidx.preference.PreferenceManager.getDefaultSharedPreferences(this);
124+
if (prefs.contains("onboarding_complete") && !prefs.contains("onboarding_version")) {
125+
boolean completed = prefs.getBoolean("onboarding_complete", false);
126+
prefs.edit()
127+
.remove("onboarding_complete")
128+
.putInt("onboarding_version", completed ? 1 : 0)
129+
.apply();
130+
Log.i(TAG, "Migrated onboarding_complete=" + completed + " -> onboarding_version=" + (completed ? 1 : 0));
131+
}
132+
133+
// Migrate old strict_blocking pref to blocking_mode
124134
if (!prefs.contains(BlockingMode.PREF_BLOCKING_MODE)) {
125135
String migratedMode = BlockingMode.getDefaultMode();
126136

app/src/main/java/net/kollnig/missioncontrol/ActivityOnboarding.java

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,13 @@
3333

3434
public class ActivityOnboarding extends AppCompatActivity {
3535

36+
/**
37+
* Bump this to re-trigger onboarding for existing users.
38+
* 1 = original onboarding (pre-2026 Q2)
39+
* 2 = blocking modes, SNI privacy fix, performance improvements
40+
*/
41+
public static final int ONBOARDING_VERSION = 2;
42+
3643
private ViewPager2 viewPager;
3744
private Button btnNext;
3845
private Button btnPrevious;
@@ -119,20 +126,17 @@ private void setupSlides() {
119126
null,
120127
null));
121128

122-
// 1b. What's New (for returning users only, shown once)
129+
// 1b. What's New (for returning users who haven't seen the latest onboarding)
123130
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
124-
int oldVersion = prefs.getInt("version", -1);
125-
boolean hasSeenWhatsNew = prefs.getBoolean("whatsnew_seen_2026", false);
126-
if (oldVersion != -1 && !hasSeenWhatsNew) {
131+
int seenVersion = prefs.getInt("onboarding_version", 0);
132+
if (seenVersion > 0 && seenVersion < ONBOARDING_VERSION) {
127133
slides.add(new Slide(
128134
R.string.onboarding_whatsnew_title,
129135
getText(R.string.onboarding_whatsnew_title),
130136
getText(R.string.onboarding_whatsnew_desc),
131137
R.drawable.ic_rocket2,
132138
null,
133139
null));
134-
// Mark as seen
135-
prefs.edit().putBoolean("whatsnew_seen_2026", true).apply();
136140
}
137141

138142
// 2. Blocking Mode Selection
@@ -426,7 +430,7 @@ private void finishOnboarding() {
426430

427431
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
428432
prefs.edit()
429-
.putBoolean("onboarding_complete", true)
433+
.putInt("onboarding_version", ONBOARDING_VERSION)
430434
.putBoolean("enabled", vpnPrepared)
431435
.apply();
432436

app/src/main/java/net/kollnig/missioncontrol/data/BlockingMode.java

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -78,14 +78,11 @@ public static boolean isStrictMode(Context c) {
7878
}
7979

8080
/**
81-
* Get the default blocking mode based on build flavor.
82-
* TC Slim (play flavor) defaults to minimal mode.
81+
* Get the default blocking mode for new users.
82+
* Minimal is the safest default — least app breakage.
8383
*/
8484
public static String getDefaultMode() {
85-
if (Util.isPlayStoreInstall()) {
86-
return MODE_MINIMAL;
87-
}
88-
return MODE_STANDARD;
85+
return MODE_MINIMAL;
8986
}
9087

9188
/**

app/src/main/res/values/strings.xml

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -456,21 +456,21 @@ Sincerely,\n\n]]></string>
456456
<string name="summary_sni_enabled">Extract hostnames from TLS connections for more accurate tracker detection. Warning: this leaks your IP address to tracker servers. Only enable for research.</string>
457457

458458
<string name="setting_blocking_mode">Blocking Mode</string>
459-
<string name="summary_blocking_mode_minimal">Minimal: Only blocks trackers from the DuckDuckGo list that are safe to block. Browsers and known incompatible apps are automatically excluded. Fewest app issues.</string>
460-
<string name="summary_blocking_mode_standard">Standard: Blocks all known trackers from multiple lists (X-Ray, Disconnect, DuckDuckGo). Essential services (e.g. content delivery) are allowed. Good balance of privacy and compatibility.</string>
461-
<string name="summary_blocking_mode_strict">Strict: Blocks all known trackers including essential services and ambiguous shared-IP domains. Maximum privacy but some apps may break.</string>
459+
<string name="summary_blocking_mode_minimal">Minimal: Only blocks trackers from the DuckDuckGo list that are safe to block. Browsers and known incompatible apps are automatically excluded. Limited app breakage.</string>
460+
<string name="summary_blocking_mode_standard">Standard: Blocks all known trackers from multiple lists (X-Ray, Disconnect, DuckDuckGo). Essential services are allowed. Some apps will break and may need to be manually excluded (see Troubleshooting in the app menu).</string>
461+
<string name="summary_blocking_mode_strict">Strict: Blocks all known trackers including essential services and ambiguous shared-IP domains. Many apps will break and need to be manually excluded (see Troubleshooting in the app menu).</string>
462462
<string name="blocking_mode_minimal">Minimal</string>
463463
<string name="blocking_mode_standard">Standard</string>
464464
<string name="blocking_mode_strict">Strict</string>
465465

466466
<string name="onboarding_blockingmode_title">Choose Blocking Mode</string>
467-
<string name="onboarding_blockingmode_desc">How aggressively should TrackerControl block trackers? You can change this later in Settings.</string>
467+
<string name="onboarding_blockingmode_desc">How aggressively should TrackerControl block trackers? Higher modes block more but will require you to manually exclude some apps. You can change this later in Settings, and find help under Troubleshooting in the app menu.</string>
468468
<string name="onboarding_blockingmode_minimal_label">Minimal</string>
469-
<string name="onboarding_blockingmode_minimal_desc">Blocks only confirmed trackers that are safe to block. Fewest app issues. Good for most users.</string>
470-
<string name="onboarding_blockingmode_standard_label">Standard (Recommended)</string>
471-
<string name="onboarding_blockingmode_standard_desc">Blocks all known trackers from multiple lists. Essential services are allowed. Good balance of privacy and compatibility.</string>
469+
<string name="onboarding_blockingmode_minimal_desc">Blocks only confirmed trackers that are safe to block. Limited app breakage. Good for most users.</string>
470+
<string name="onboarding_blockingmode_standard_label">Standard</string>
471+
<string name="onboarding_blockingmode_standard_desc">Blocks all known trackers from multiple lists. Some apps will break and need to be manually excluded.</string>
472472
<string name="onboarding_blockingmode_strict_label">Strict</string>
473-
<string name="onboarding_blockingmode_strict_desc">Blocks everything including essential services and ambiguous domains. Maximum privacy but some apps may break.</string>
473+
<string name="onboarding_blockingmode_strict_desc">Blocks everything including essential services and ambiguous domains. Significant app breakage — many apps will need to be manually excluded.</string>
474474

475475
<string name="exclude_vpn" translatable="false">Tracker Protection</string>
476476
<string name="exclude_vpn_explanation">Detects and blocks trackers for this app.</string>
@@ -619,8 +619,8 @@ Sincerely,\n\n]]></string>
619619
<string name="insights_see_more">See More →</string>
620620

621621
<!-- What's New onboarding slide (not translated) -->
622-
<string name="onboarding_whatsnew_title" translatable="false">Major update ahead!</string>
623-
<string name="onboarding_whatsnew_desc" translatable="false">• New Insights: View statistics on blocked trackers and tracking companies, directly from the main screen.\n• DuckDuckGo Tracker Radar: Added mobile-specific tracker detection for even better coverage.\n• Secure DNS: Added support for Encrypted DNS (DoH) for better privacy.\n• Enhanced Blocking: Support for multiple blocklists and auto-updates.\n• Simpler Settings: \"Monitor\" is now \"Exclude from VPN\" for clarity.\n• Performance: 50% smaller app size, faster startup, and improved battery life.\n• Revamped Analysis: Faster and cleaner tracker library scanner.\n• Improved Stability: Fixed bugs, crashes, and improved backups.</string>
622+
<string name="onboarding_whatsnew_title" translatable="false">What\'s New</string>
623+
<string name="onboarding_whatsnew_desc" translatable="false">• Blocking Modes: Choose between Minimal, Standard, or Strict blocking to balance privacy and app compatibility.\n• Minimal Mode: DuckDuckGo-compatible blocking that avoids app breakage. Browsers and known incompatible apps are automatically excluded.\n• Privacy Fix: SNI extraction is now off by default — it was leaking your IP address to tracker servers.\n• Improved Performance: Faster scrolling, reduced memory usage, and better battery life.\n• Troubleshooting: New troubleshooting screen in settings to diagnose common issues.\n• Better Tracker Detection: Improved handling of shared IPs and DNS-cloaked trackers.</string>
624624

625625
<string name="title_blocklists">Additional host files</string>
626626
<string name="summary_manage_blocklists">These are only for fallback. TrackerControl includes its own host lists that give insights on the companies behind tracking.</string>

0 commit comments

Comments
 (0)