diff --git a/.gitignore b/.gitignore
index 793c0cab..892ec1b7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -17,4 +17,4 @@ plans/
.env
.temp/
certs/
-codenomad/
\ No newline at end of file
+codenomad/
diff --git a/.vscode/launch.json b/.vscode/launch.json
index 026e41ce..8ce77e7d 100644
--- a/.vscode/launch.json
+++ b/.vscode/launch.json
@@ -13,7 +13,12 @@
"--device-user",
"0",
"--flavor",
- "alpha"
+ "alpha",
+ "--dart-define",
+ "ACCOUNT_BACKEND_ORIGIN=https://account.weblibre.eu/",
+ "--dart-define",
+ "SEARCH_BACKEND_ORIGIN=https://search.weblibre.eu/",
+ "SEARCH_BACKEND_ORIGIN_TOR=http://eyipgwt32zaejr2xwblaswp2ur4qikapofunbqus5dklvf7jxkncirad.onion",
]
},
{
diff --git a/apps/weblibre/android/app/build.gradle b/apps/weblibre/android/app/build.gradle
index f7948ebb..e11f95da 100644
--- a/apps/weblibre/android/app/build.gradle
+++ b/apps/weblibre/android/app/build.gradle
@@ -87,7 +87,9 @@ android {
// Signing with the debug keys for now, so `flutter run --release` works.
signingConfig = signingConfigs.release
- proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
+ shrinkResources = !project.hasProperty("disableOptimization")
+ minifyEnabled = !project.hasProperty("disableOptimization")
+ proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
matchingFallbacks = ['release'] // Use on the "release" build type in dependencies (AARs)
}
}
diff --git a/apps/weblibre/android/app/proguard-rules.pro b/apps/weblibre/android/app/proguard-rules.pro
index 12037847..3ccf0e29 100644
--- a/apps/weblibre/android/app/proguard-rules.pro
+++ b/apps/weblibre/android/app/proguard-rules.pro
@@ -1,43 +1,17 @@
-dontobfuscate
####################################################################################################
-# Android and GeckoView built-ins
+# GeckoView built-ins
####################################################################################################
--dontwarn android.**
--dontwarn androidx.**
--dontwarn com.google.**
-dontwarn org.mozilla.geckoview.**
-# Raptor now writes a *-config.yaml file to specify Gecko runtime settings (e.g. the profile dir). This
-# file gets deserialized into a DebugConfig object, which is why we need to keep this class
-# and its members.
--keep class org.mozilla.gecko.util.DebugConfig { *; }
-
####################################################################################################
-# kotlinx.coroutines: use the fast service loader to init MainDispatcherLoader by including a rule
-# to rewrite this property to return true:
-# https://github.com/Kotlin/kotlinx.coroutines/blob/8c98180f177bbe4b26f1ed9685a9280fea648b9c/kotlinx-coroutines-core/jvm/src/internal/MainDispatchers.kt#L19
-#
-# R8 is expected to optimize the default implementation to avoid a performance issue but a bug in R8
-# as bundled with AGP v7.0.0 causes this optimization to fail so we use the fast service loader instead. See:
-# https://github.com/mozilla-mobile/focus-android/issues/5102#issuecomment-897854121
-#
-# The fast service loader appears to be as performant as the R8 optimization so it's not worth the
-# churn to later remove this workaround. If needed, the upstream fix is being handled in
-# https://issuetracker.google.com/issues/196302685
-####################################################################################################
--assumenosideeffects class kotlinx.coroutines.internal.MainDispatcherLoader {
- boolean FAST_SERVICE_LOADER_ENABLED return true;
-}
-
-####################################################################################################
-# REMOVE all Log messages except warnings and errors
+# Remove debug logs from release builds
####################################################################################################
-assumenosideeffects class android.util.Log {
public static boolean isLoggable(java.lang.String, int);
public static int v(...);
- public static int i(...);
public static int d(...);
}
@@ -48,23 +22,7 @@
-keep class mozilla.appservices.** { *; }
####################################################################################################
-# ViewModels
-####################################################################################################
-
--keep class org.mozilla.fenix.**ViewModel { *; }
-
-# Keep Android Lifecycle methods
-# https://bugzilla.mozilla.org/show_bug.cgi?id=1596302
--keep class androidx.lifecycle.** { *; }
-
--dontwarn java.beans.BeanInfo
--dontwarn java.beans.FeatureDescriptor
--dontwarn java.beans.IntrospectionException
--dontwarn java.beans.Introspector
--dontwarn java.beans.PropertyDescriptor
-
-####################################################################################################
-# Checker Framework
+# Dependency annotations referenced from bundled ExoPlayer classes
####################################################################################################
-dontwarn org.checkerframework.checker.nullness.qual.EnsuresNonNull
diff --git a/apps/weblibre/android/app/src/alpha/res/drawable-hdpi/ic_launcher_foreground.png b/apps/weblibre/android/app/src/alpha/res/drawable-hdpi/ic_launcher_foreground.png
index f4436801..6184c814 100644
Binary files a/apps/weblibre/android/app/src/alpha/res/drawable-hdpi/ic_launcher_foreground.png and b/apps/weblibre/android/app/src/alpha/res/drawable-hdpi/ic_launcher_foreground.png differ
diff --git a/apps/weblibre/android/app/src/alpha/res/drawable-hdpi/ic_launcher_monochrome.png b/apps/weblibre/android/app/src/alpha/res/drawable-hdpi/ic_launcher_monochrome.png
index f4436801..6184c814 100644
Binary files a/apps/weblibre/android/app/src/alpha/res/drawable-hdpi/ic_launcher_monochrome.png and b/apps/weblibre/android/app/src/alpha/res/drawable-hdpi/ic_launcher_monochrome.png differ
diff --git a/apps/weblibre/android/app/src/alpha/res/drawable-mdpi/ic_launcher_foreground.png b/apps/weblibre/android/app/src/alpha/res/drawable-mdpi/ic_launcher_foreground.png
index 9dc5e77b..f840d42a 100644
Binary files a/apps/weblibre/android/app/src/alpha/res/drawable-mdpi/ic_launcher_foreground.png and b/apps/weblibre/android/app/src/alpha/res/drawable-mdpi/ic_launcher_foreground.png differ
diff --git a/apps/weblibre/android/app/src/alpha/res/drawable-mdpi/ic_launcher_monochrome.png b/apps/weblibre/android/app/src/alpha/res/drawable-mdpi/ic_launcher_monochrome.png
index 9dc5e77b..f840d42a 100644
Binary files a/apps/weblibre/android/app/src/alpha/res/drawable-mdpi/ic_launcher_monochrome.png and b/apps/weblibre/android/app/src/alpha/res/drawable-mdpi/ic_launcher_monochrome.png differ
diff --git a/apps/weblibre/android/app/src/alpha/res/drawable-xhdpi/ic_launcher_foreground.png b/apps/weblibre/android/app/src/alpha/res/drawable-xhdpi/ic_launcher_foreground.png
index bccef354..2855e3ba 100644
Binary files a/apps/weblibre/android/app/src/alpha/res/drawable-xhdpi/ic_launcher_foreground.png and b/apps/weblibre/android/app/src/alpha/res/drawable-xhdpi/ic_launcher_foreground.png differ
diff --git a/apps/weblibre/android/app/src/alpha/res/drawable-xhdpi/ic_launcher_monochrome.png b/apps/weblibre/android/app/src/alpha/res/drawable-xhdpi/ic_launcher_monochrome.png
index bccef354..2855e3ba 100644
Binary files a/apps/weblibre/android/app/src/alpha/res/drawable-xhdpi/ic_launcher_monochrome.png and b/apps/weblibre/android/app/src/alpha/res/drawable-xhdpi/ic_launcher_monochrome.png differ
diff --git a/apps/weblibre/android/app/src/alpha/res/drawable-xxhdpi/ic_launcher_foreground.png b/apps/weblibre/android/app/src/alpha/res/drawable-xxhdpi/ic_launcher_foreground.png
index cf4bf79a..3fa53b7f 100644
Binary files a/apps/weblibre/android/app/src/alpha/res/drawable-xxhdpi/ic_launcher_foreground.png and b/apps/weblibre/android/app/src/alpha/res/drawable-xxhdpi/ic_launcher_foreground.png differ
diff --git a/apps/weblibre/android/app/src/alpha/res/drawable-xxhdpi/ic_launcher_monochrome.png b/apps/weblibre/android/app/src/alpha/res/drawable-xxhdpi/ic_launcher_monochrome.png
index cf4bf79a..3fa53b7f 100644
Binary files a/apps/weblibre/android/app/src/alpha/res/drawable-xxhdpi/ic_launcher_monochrome.png and b/apps/weblibre/android/app/src/alpha/res/drawable-xxhdpi/ic_launcher_monochrome.png differ
diff --git a/apps/weblibre/android/app/src/alpha/res/drawable-xxxhdpi/ic_launcher_foreground.png b/apps/weblibre/android/app/src/alpha/res/drawable-xxxhdpi/ic_launcher_foreground.png
index b642ffee..0c268c4a 100644
Binary files a/apps/weblibre/android/app/src/alpha/res/drawable-xxxhdpi/ic_launcher_foreground.png and b/apps/weblibre/android/app/src/alpha/res/drawable-xxxhdpi/ic_launcher_foreground.png differ
diff --git a/apps/weblibre/android/app/src/alpha/res/drawable-xxxhdpi/ic_launcher_monochrome.png b/apps/weblibre/android/app/src/alpha/res/drawable-xxxhdpi/ic_launcher_monochrome.png
index b642ffee..0c268c4a 100644
Binary files a/apps/weblibre/android/app/src/alpha/res/drawable-xxxhdpi/ic_launcher_monochrome.png and b/apps/weblibre/android/app/src/alpha/res/drawable-xxxhdpi/ic_launcher_monochrome.png differ
diff --git a/apps/weblibre/android/app/src/alpha/res/mipmap-hdpi/launcher_icon.png b/apps/weblibre/android/app/src/alpha/res/mipmap-hdpi/launcher_icon.png
index 6111b6a5..1b9847d4 100644
Binary files a/apps/weblibre/android/app/src/alpha/res/mipmap-hdpi/launcher_icon.png and b/apps/weblibre/android/app/src/alpha/res/mipmap-hdpi/launcher_icon.png differ
diff --git a/apps/weblibre/android/app/src/alpha/res/mipmap-mdpi/launcher_icon.png b/apps/weblibre/android/app/src/alpha/res/mipmap-mdpi/launcher_icon.png
index 6e33fa92..937e7b08 100644
Binary files a/apps/weblibre/android/app/src/alpha/res/mipmap-mdpi/launcher_icon.png and b/apps/weblibre/android/app/src/alpha/res/mipmap-mdpi/launcher_icon.png differ
diff --git a/apps/weblibre/android/app/src/alpha/res/mipmap-xhdpi/launcher_icon.png b/apps/weblibre/android/app/src/alpha/res/mipmap-xhdpi/launcher_icon.png
index b51d3f3f..0ebb581d 100644
Binary files a/apps/weblibre/android/app/src/alpha/res/mipmap-xhdpi/launcher_icon.png and b/apps/weblibre/android/app/src/alpha/res/mipmap-xhdpi/launcher_icon.png differ
diff --git a/apps/weblibre/android/app/src/alpha/res/mipmap-xxhdpi/launcher_icon.png b/apps/weblibre/android/app/src/alpha/res/mipmap-xxhdpi/launcher_icon.png
index 4cf5c77f..ac728fb4 100644
Binary files a/apps/weblibre/android/app/src/alpha/res/mipmap-xxhdpi/launcher_icon.png and b/apps/weblibre/android/app/src/alpha/res/mipmap-xxhdpi/launcher_icon.png differ
diff --git a/apps/weblibre/android/app/src/alpha/res/mipmap-xxxhdpi/launcher_icon.png b/apps/weblibre/android/app/src/alpha/res/mipmap-xxxhdpi/launcher_icon.png
index 8c891d7e..0a7a8ff7 100644
Binary files a/apps/weblibre/android/app/src/alpha/res/mipmap-xxxhdpi/launcher_icon.png and b/apps/weblibre/android/app/src/alpha/res/mipmap-xxxhdpi/launcher_icon.png differ
diff --git a/apps/weblibre/android/app/src/main/AndroidManifest.xml b/apps/weblibre/android/app/src/main/AndroidManifest.xml
index a3df48d1..7dd4e1fd 100644
--- a/apps/weblibre/android/app/src/main/AndroidManifest.xml
+++ b/apps/weblibre/android/app/src/main/AndroidManifest.xml
@@ -7,6 +7,7 @@
+
@@ -117,7 +118,14 @@
-
+
+
+
+
+
+
+
+
@@ -246,6 +254,15 @@
android:foregroundServiceType="dataSync"
android:exported="false" />
+
+
+
+
diff --git a/apps/weblibre/android/app/src/main/kotlin/eu/weblibre/gecko/MyApplication.kt b/apps/weblibre/android/app/src/main/kotlin/eu/weblibre/gecko/MyApplication.kt
index ccaf9aec..88c7632e 100644
--- a/apps/weblibre/android/app/src/main/kotlin/eu/weblibre/gecko/MyApplication.kt
+++ b/apps/weblibre/android/app/src/main/kotlin/eu/weblibre/gecko/MyApplication.kt
@@ -23,6 +23,7 @@ import android.app.Application
import android.content.SharedPreferences
import eu.weblibre.flutter_mozilla_components.ActiveProfile
import eu.weblibre.flutter_mozilla_components.MegazordSetup
+import eu.weblibre.flutter_mozilla_components.feature.SandboxCaptureFeature
class MyApplication : Application() {
override fun onCreate() {
@@ -33,6 +34,12 @@ class MyApplication : Application() {
// Resolve active profile EARLY so cold-start WorkManager workers
// get profile-prefixed SharedPreferences
ActiveProfile.resolveFromDisk(this)
+
+ // Rehydrate the sandbox capture registry from the on-disk JSON mirror
+ // before Gecko has a chance to start restoring tabs. Each entry gets
+ // redirectUrl="about:blank"; Dart replaces those once CaptureServer is
+ // running with real loader/capture URLs.
+ SandboxCaptureFeature.preRestoreBootstrap(this)
}
override fun getSharedPreferences(name: String, mode: Int): SharedPreferences {
diff --git a/apps/weblibre/assets/icon/icon_alpha.png b/apps/weblibre/assets/icon/icon_alpha.png
index cb32fdd5..093c4475 100644
Binary files a/apps/weblibre/assets/icon/icon_alpha.png and b/apps/weblibre/assets/icon/icon_alpha.png differ
diff --git a/apps/weblibre/assets/icon/icon_alpha.svg b/apps/weblibre/assets/icon/icon_alpha.svg
index c88c59ec..3948e1f5 100644
--- a/apps/weblibre/assets/icon/icon_alpha.svg
+++ b/apps/weblibre/assets/icon/icon_alpha.svg
@@ -1,16 +1,30 @@