diff --git a/Manifests/Manifest_LAOS-14.1.xml b/Manifests/Manifest_LAOS-14.1.xml
index c18c8fa7..62a32e52 100644
--- a/Manifests/Manifest_LAOS-14.1.xml
+++ b/Manifests/Manifest_LAOS-14.1.xml
@@ -28,7 +28,7 @@
-
+
diff --git a/Manifests/Manifest_LAOS-15.1.xml b/Manifests/Manifest_LAOS-15.1.xml
index ae5f8321..33ded49b 100644
--- a/Manifests/Manifest_LAOS-15.1.xml
+++ b/Manifests/Manifest_LAOS-15.1.xml
@@ -28,7 +28,7 @@
-
+
diff --git a/Manifests/Manifest_LAOS-16.0.xml b/Manifests/Manifest_LAOS-16.0.xml
index 89e1329c..e08cd436 100644
--- a/Manifests/Manifest_LAOS-16.0.xml
+++ b/Manifests/Manifest_LAOS-16.0.xml
@@ -27,7 +27,7 @@
-
+
diff --git a/Manifests/Manifest_LAOS-17.1.xml b/Manifests/Manifest_LAOS-17.1.xml
index bd87c778..56815e22 100644
--- a/Manifests/Manifest_LAOS-17.1.xml
+++ b/Manifests/Manifest_LAOS-17.1.xml
@@ -24,7 +24,7 @@
-
+
diff --git a/Manifests/Manifest_LAOS-18.1.xml b/Manifests/Manifest_LAOS-18.1.xml
index f3de7c42..276578fe 100644
--- a/Manifests/Manifest_LAOS-18.1.xml
+++ b/Manifests/Manifest_LAOS-18.1.xml
@@ -26,7 +26,7 @@
-
+
diff --git a/Manifests/Manifest_LAOS-19.1.xml b/Manifests/Manifest_LAOS-19.1.xml
index 48e089a1..39c7f460 100644
--- a/Manifests/Manifest_LAOS-19.1.xml
+++ b/Manifests/Manifest_LAOS-19.1.xml
@@ -14,7 +14,7 @@
-
+
diff --git a/Misc/Features/GrapheneOS.txt b/Misc/Features/GrapheneOS.txt
index e9e4e464..2d1e31b3 100644
--- a/Misc/Features/GrapheneOS.txt
+++ b/Misc/Features/GrapheneOS.txt
@@ -4,9 +4,6 @@ QQ3A.200805.001.2020.09.11.14
PQ3B.190801.002.2019.08.25.15
-show crash details
-12 https://github.com/GrapheneOS/platform_frameworks_base/commit/e740f4b78344c5671d022dfe90bed9e2dacd3db6
-
https time
12 https://github.com/GrapheneOS/platform_frameworks_base/commit/1d4e3f495b7b544f6314f04243e9d47b3f8e7102
12 https://github.com/GrapheneOS/platform_frameworks_base/commit/2c04a077ec9f3ac6857885199f49f4845b70ec2e
@@ -66,6 +63,9 @@ nojit
9 https://github.com/GrapheneOS/platform_build/commit/5b9927197e63593b9220d1a9280021252ef205e9
9 https://github.com/GrapheneOS/platform_build/commit/e36c7aefaa78a1ed5b94c7f51d29277008eea232
+[implemented] show crash details
+12 https://github.com/GrapheneOS/platform_frameworks_base/commit/e740f4b78344c5671d022dfe90bed9e2dacd3db6
+
[implemented] monet toggle
12 https://github.com/GrapheneOS/platform_frameworks_base/commit/e77f8f544c8c6e826d8497be6ebbc69d72d2f1a5
12 https://github.com/GrapheneOS/platform_packages_apps_ThemePicker/commit/a287544b550887ea646277d78cde80b19e1ca9af
diff --git a/Misc/captive_portal_toggle-19.1-err b/Misc/captive_portal_toggle-19.1-err
new file mode 100644
index 00000000..7338a81e
--- /dev/null
+++ b/Misc/captive_portal_toggle-19.1-err
@@ -0,0 +1,55 @@
+09-23 11:50:49.155 2227 2227 E AndroidRuntime: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.settings/com.android.settings.SubSettings}: java.lang.NullPointerException: Attempt to invoke virtual method 'void androidx.preference.Preference.setOnPreferenceChangeListener(androidx.preference.Preference$OnPreferenceChangeListener)' on a null object reference
+09-23 11:50:49.155 2227 2227 E AndroidRuntime: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3707)
+09-23 11:50:49.155 2227 2227 E AndroidRuntime: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3864)
+09-23 11:50:49.155 2227 2227 E AndroidRuntime: at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:103)
+09-23 11:50:49.155 2227 2227 E AndroidRuntime: at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
+09-23 11:50:49.155 2227 2227 E AndroidRuntime: at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
+09-23 11:50:49.155 2227 2227 E AndroidRuntime: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2253)
+09-23 11:50:49.155 2227 2227 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:106)
+09-23 11:50:49.155 2227 2227 E AndroidRuntime: at android.os.Looper.loopOnce(Looper.java:201)
+09-23 11:50:49.155 2227 2227 E AndroidRuntime: at android.os.Looper.loop(Looper.java:288)
+09-23 11:50:49.155 2227 2227 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:7870)
+09-23 11:50:49.155 2227 2227 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
+09-23 11:50:49.155 2227 2227 E AndroidRuntime: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
+09-23 11:50:49.155 2227 2227 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1019)
+09-23 11:50:49.155 2227 2227 E AndroidRuntime: Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void androidx.preference.Preference.setOnPreferenceChangeListener(androidx.preference.Preference$OnPreferenceChangeListener)' on a null object reference
+09-23 11:50:49.155 2227 2227 E AndroidRuntime: at com.android.settingslib.core.AbstractPreferenceController.displayPreference(AbstractPreferenceController.java:37)
+09-23 11:50:49.155 2227 2227 E AndroidRuntime: at com.android.settings.dashboard.DashboardFragment.lambda$displayResourceTilesToScreen$7(DashboardFragment.java:339)
+09-23 11:50:49.155 2227 2227 E AndroidRuntime: at com.android.settings.dashboard.DashboardFragment.$r8$lambda$7KgqziyHu5rnhM8JHZ4buqOlhzM(Unknown Source:0)
+09-23 11:50:49.155 2227 2227 E AndroidRuntime: at com.android.settings.dashboard.DashboardFragment$$ExternalSyntheticLambda2.accept(Unknown Source:4)
+09-23 11:50:49.155 2227 2227 E AndroidRuntime: at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
+09-23 11:50:49.155 2227 2227 E AndroidRuntime: at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1390)
+09-23 11:50:49.155 2227 2227 E AndroidRuntime: at java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:604)
+09-23 11:50:49.155 2227 2227 E AndroidRuntime: at java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:283)
+09-23 11:50:49.155 2227 2227 E AndroidRuntime: at java.util.Iterator.forEachRemaining(Iterator.java:116)
+09-23 11:50:49.155 2227 2227 E AndroidRuntime: at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
+09-23 11:50:49.155 2227 2227 E AndroidRuntime: at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:485)
+09-23 11:50:49.155 2227 2227 E AndroidRuntime: at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:475)
+09-23 11:50:49.155 2227 2227 E AndroidRuntime: at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
+09-23 11:50:49.155 2227 2227 E AndroidRuntime: at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:133)
+09-23 11:50:49.155 2227 2227 E AndroidRuntime: at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:236)
+09-23 11:50:49.155 2227 2227 E AndroidRuntime: at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:435)
+09-23 11:50:49.155 2227 2227 E AndroidRuntime: at com.android.settings.dashboard.DashboardFragment.displayResourceTilesToScreen(DashboardFragment.java:338)
+09-23 11:50:49.155 2227 2227 E AndroidRuntime: at com.android.settings.dashboard.DashboardFragment.displayResourceTiles(DashboardFragment.java:330)
+09-23 11:50:49.155 2227 2227 E AndroidRuntime: at com.android.settings.dashboard.DashboardFragment.refreshAllPreferences(DashboardFragment.java:431)
+09-23 11:50:49.155 2227 2227 E AndroidRuntime: at com.android.settings.dashboard.DashboardFragment.onCreatePreferences(DashboardFragment.java:182)
+09-23 11:50:49.155 2227 2227 E AndroidRuntime: at com.android.settings.network.NetworkDashboardFragment.onCreatePreferences(NetworkDashboardFragment.java:76)
+09-23 11:50:49.155 2227 2227 E AndroidRuntime: at androidx.preference.PreferenceFragmentCompat.onCreate(PreferenceFragmentCompat.java:161)
+09-23 11:50:49.155 2227 2227 E AndroidRuntime: at com.android.settingslib.core.lifecycle.ObservablePreferenceFragment.onCreate(ObservablePreferenceFragment.java:61)
+09-23 11:50:49.155 2227 2227 E AndroidRuntime: at com.android.settings.SettingsPreferenceFragment.onCreate(SettingsPreferenceFragment.java:126)
+09-23 11:50:49.155 2227 2227 E AndroidRuntime: at com.android.settings.dashboard.DashboardFragment.onCreate(DashboardFragment.java:150)
+09-23 11:50:49.155 2227 2227 E AndroidRuntime: at androidx.fragment.app.Fragment.performCreate(Fragment.java:2939)
+09-23 11:50:49.155 2227 2227 E AndroidRuntime: at androidx.fragment.app.FragmentStateManager.create(FragmentStateManager.java:451)
+09-23 11:50:49.155 2227 2227 E AndroidRuntime: at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:254)
+09-23 11:50:49.155 2227 2227 E AndroidRuntime: at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:2209)
+09-23 11:50:49.155 2227 2227 E AndroidRuntime: at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:2120)
+09-23 11:50:49.155 2227 2227 E AndroidRuntime: at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:2022)
+09-23 11:50:49.155 2227 2227 E AndroidRuntime: at androidx.fragment.app.FragmentManager.executePendingTransactions(FragmentManager.java:603)
+09-23 11:50:49.155 2227 2227 E AndroidRuntime: at com.android.settings.SettingsActivity.switchToFragment(SettingsActivity.java:727)
+09-23 11:50:49.155 2227 2227 E AndroidRuntime: at com.android.settings.SettingsActivity.launchSettingFragment(SettingsActivity.java:509)
+09-23 11:50:49.155 2227 2227 E AndroidRuntime: at com.android.settings.SettingsActivity.onCreate(SettingsActivity.java:304)
+09-23 11:50:49.155 2227 2227 E AndroidRuntime: at android.app.Activity.performCreate(Activity.java:8057)
+09-23 11:50:49.155 2227 2227 E AndroidRuntime: at android.app.Activity.performCreate(Activity.java:8037)
+09-23 11:50:49.155 2227 2227 E AndroidRuntime: at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1341)
+09-23 11:50:49.155 2227 2227 E AndroidRuntime: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3688)
+09-23 11:50:49.155 2227 2227 E AndroidRuntime: ... 12 more
diff --git a/Patches/LineageOS-19.1/android_frameworks_base/0026-Crash_Details.patch b/Patches/LineageOS-19.1/android_frameworks_base/0026-Crash_Details.patch
new file mode 100644
index 00000000..bf1800aa
--- /dev/null
+++ b/Patches/LineageOS-19.1/android_frameworks_base/0026-Crash_Details.patch
@@ -0,0 +1,348 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Dmitry Muhomor
+Date: Mon, 8 Aug 2022 19:03:37 +0300
+Subject: [PATCH] add an option to show the details of an application error to
+ the user
+
+Adds a "Show details" item to crash and ANR (app not responding) dialogs that takes the user to a
+SystemUI activity which shows the error details and allows to copy them to the clipboard or to
+export them via the standard sharing UI.
+---
+ .../android/app/ApplicationErrorReport.java | 14 +-
+ core/res/res/layout/app_anr_dialog.xml | 4 +-
+ core/res/res/layout/app_error_dialog.xml | 4 +-
+ core/res/res/values/strings.xml | 3 +
+ core/res/res/values/symbols.xml | 3 +
+ packages/SystemUI/AndroidManifest.xml | 12 ++
+ packages/SystemUI/res/values/strings.xml | 5 +
+ .../android/systemui/ErrorReportActivity.kt | 159 ++++++++++++++++++
+ .../java/com/android/server/am/AppErrors.java | 1 +
+ 9 files changed, 199 insertions(+), 6 deletions(-)
+ create mode 100644 packages/SystemUI/src/com/android/systemui/ErrorReportActivity.kt
+
+diff --git a/core/java/android/app/ApplicationErrorReport.java b/core/java/android/app/ApplicationErrorReport.java
+index a0b3dc0452ac..d6b9a837c46b 100644
+--- a/core/java/android/app/ApplicationErrorReport.java
++++ b/core/java/android/app/ApplicationErrorReport.java
+@@ -98,6 +98,9 @@ public class ApplicationErrorReport implements Parcelable {
+ */
+ public String packageName;
+
++ /** @hide */
++ public long packageVersion;
++
+ /**
+ * Package name of the application which installed the application this
+ * report pertains to.
+@@ -162,13 +165,18 @@ public class ApplicationErrorReport implements Parcelable {
+ String packageName, int appFlags) {
+ // check if error reporting is enabled in secure settings
+ int enabled = Settings.Global.getInt(context.getContentResolver(),
+- Settings.Global.SEND_ACTION_APP_ERROR, 0);
++ Settings.Global.SEND_ACTION_APP_ERROR, 1);
+ if (enabled == 0) {
+ return null;
+ }
+
+ PackageManager pm = context.getPackageManager();
+
++ ComponentName systemUiReceiver = getErrorReportReceiver(pm, packageName, "com.android.systemui");
++ if (systemUiReceiver != null) {
++ return systemUiReceiver;
++ }
++
+ // look for receiver in the installer package
+ String candidate = null;
+ ComponentName result = null;
+@@ -233,6 +241,7 @@ public class ApplicationErrorReport implements Parcelable {
+ public void writeToParcel(Parcel dest, int flags) {
+ dest.writeInt(type);
+ dest.writeString(packageName);
++ dest.writeLong(packageVersion);
+ dest.writeString(installerPackageName);
+ dest.writeString(processName);
+ dest.writeLong(time);
+@@ -260,6 +269,7 @@ public class ApplicationErrorReport implements Parcelable {
+ public void readFromParcel(Parcel in) {
+ type = in.readInt();
+ packageName = in.readString();
++ packageVersion = in.readLong();
+ installerPackageName = in.readString();
+ processName = in.readString();
+ time = in.readLong();
+@@ -686,7 +696,7 @@ public class ApplicationErrorReport implements Parcelable {
+ */
+ public void dump(Printer pw, String prefix) {
+ pw.println(prefix + "type: " + type);
+- pw.println(prefix + "packageName: " + packageName);
++ pw.println(prefix + "packageName: " + packageName + ":" + packageVersion);
+ pw.println(prefix + "installerPackageName: " + installerPackageName);
+ pw.println(prefix + "processName: " + processName);
+ pw.println(prefix + "time: " + time);
+diff --git a/core/res/res/layout/app_anr_dialog.xml b/core/res/res/layout/app_anr_dialog.xml
+index 5ad0f4c0f6cc..ad3a2d2991de 100644
+--- a/core/res/res/layout/app_anr_dialog.xml
++++ b/core/res/res/layout/app_anr_dialog.xml
+@@ -41,8 +41,8 @@
+ android:id="@+id/aerr_report"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+- android:text="@string/aerr_report"
+- android:drawableStart="@drawable/ic_feedback"
++ android:text="@string/aerr_show_details"
++ android:drawableStart="@drawable/ic_info_outline_24"
+ style="@style/aerr_list_item" />
+
+
+diff --git a/core/res/res/layout/app_error_dialog.xml b/core/res/res/layout/app_error_dialog.xml
+index c3b149a1e295..a47b82018377 100644
+--- a/core/res/res/layout/app_error_dialog.xml
++++ b/core/res/res/layout/app_error_dialog.xml
+@@ -52,8 +52,8 @@
+ android:id="@+id/aerr_report"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+- android:text="@string/aerr_report"
+- android:drawableStart="@drawable/ic_feedback"
++ android:text="@string/aerr_show_details"
++ android:drawableStart="@drawable/ic_info_outline_24"
+ style="@style/aerr_list_item" />
+
+