diff --git a/quickstep/res/values/dimens.xml b/quickstep/res/values/dimens.xml
index d339d28..0d8391b 100644
--- a/quickstep/res/values/dimens.xml
+++ b/quickstep/res/values/dimens.xml
@@ -304,7 +304,7 @@
 
     <dimen name="taskbar_nav_threshold_v2">30dp</dimen>
     <dimen name="taskbar_app_window_threshold_v2">100dp</dimen>
-    <dimen name="taskbar_home_overview_threshold_v2">200dp</dimen>
+    <dimen name="taskbar_home_overview_threshold_v2">180dp</dimen>
 
     <!--  Taskbar 3 button spacing  -->
     <dimen name="taskbar_button_space_inbetween">24dp</dimen>
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarUIController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarUIController.java
index b680a15..87fa6f3 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarUIController.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarUIController.java
@@ -31,6 +31,7 @@
 import com.android.launcher3.util.SplitConfigurationOptions;
 import com.android.quickstep.views.RecentsView;
 import com.android.quickstep.views.TaskView;
+import com.android.quickstep.views.TaskView.TaskIdAttributeContainer;
 import com.android.systemui.shared.recents.model.Task;
 
 import java.io.PrintWriter;
@@ -202,12 +203,16 @@
                         // null checks as much. See comments at ag/21152798.
                         if (foundTaskView != null) {
                             // There is already a running app of this type, use that as second app.
+                            // Get index of task (0 or 1), in case it's a GroupedTaskView
+                            int indexOfTask = foundTaskView.getIndexOfTask(foundTask.key.id);
+                            TaskIdAttributeContainer taskAttributes =
+                                    foundTaskView.getTaskIdAttributeContainers()[indexOfTask];
                             recents.confirmSplitSelect(
                                     foundTaskView,
-                                    foundTaskView.getTask(),
-                                    foundTaskView.getIconView().getDrawable(),
-                                    foundTaskView.getThumbnail(),
-                                    foundTaskView.getThumbnail().getThumbnail(),
+                                    taskAttributes.getTask(),
+                                    taskAttributes.getIconView().getDrawable(),
+                                    taskAttributes.getThumbnailView(),
+                                    taskAttributes.getThumbnailView().getThumbnail(),
                                     null /* intent */);
                             return;
                         }
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarView.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarView.java
index db584d8..38351a9 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarView.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarView.java
@@ -47,6 +47,7 @@
 import com.android.launcher3.util.LauncherBindableItemsContainer;
 import com.android.launcher3.views.ActivityContext;
 import com.android.launcher3.views.DoubleShadowBubbleTextView;
+import com.android.launcher3.views.IconButtonView;
 
 import java.util.function.Predicate;
 
@@ -80,7 +81,7 @@
     private @Nullable FolderIcon mLeaveBehindFolderIcon;
 
     // Only non-null when device supports having an All Apps button.
-    private @Nullable View mAllAppsButton;
+    private @Nullable IconButtonView mAllAppsButton;
 
     // Only non-null when device supports having an All Apps button.
     private @Nullable View mTaskbarDivider;
@@ -125,10 +126,14 @@
 
         if (FeatureFlags.ENABLE_ALL_APPS_IN_TASKBAR.get()
                 && !mActivityContext.getPackageManager().hasSystemFeature(FEATURE_PC)) {
-            mAllAppsButton = LayoutInflater.from(context)
+            mAllAppsButton = (IconButtonView) LayoutInflater.from(context)
                     .inflate(R.layout.taskbar_all_apps_button, this, false);
             mAllAppsButton.setPadding(mItemPadding, mItemPadding, mItemPadding, mItemPadding);
             mAllAppsButton.setScaleX(mIsRtl ? -1 : 1);
+            mAllAppsButton.setForegroundTint(mActivityContext.getColor(
+                    DisplayController.isTransientTaskbar(mActivityContext)
+                            ? R.color.all_apps_button_color
+                            : R.color.all_apps_button_color_dark));
 
             if (FeatureFlags.ENABLE_TASKBAR_PINNING.get()) {
                 mTaskbarDivider = LayoutInflater.from(context).inflate(R.layout.taskbar_divider,
diff --git a/quickstep/src/com/android/quickstep/util/LauncherUnfoldAnimationController.java b/quickstep/src/com/android/quickstep/util/LauncherUnfoldAnimationController.java
index 170c622..fdbb119 100644
--- a/quickstep/src/com/android/quickstep/util/LauncherUnfoldAnimationController.java
+++ b/quickstep/src/com/android/quickstep/util/LauncherUnfoldAnimationController.java
@@ -20,6 +20,7 @@
 import static com.android.launcher3.LauncherAnimUtils.WORKSPACE_SCALE_PROPERTY_FACTORY;
 
 import android.annotation.Nullable;
+import android.os.Trace;
 import android.util.FloatProperty;
 import android.util.MathUtils;
 import android.view.WindowManager;
@@ -55,6 +56,9 @@
     private final UnfoldMoveFromCenterHotseatAnimator mUnfoldMoveFromCenterHotseatAnimator;
     private final UnfoldMoveFromCenterWorkspaceAnimator mUnfoldMoveFromCenterWorkspaceAnimator;
 
+    private static final String TRACE_WAIT_TO_HANDLE_UNFOLD_TRANSITION =
+            "waitingOneFrameBeforeHandlingUnfoldAnimation";
+
     @Nullable
     private HorizontalInsettableView mQsbInsettable;
 
@@ -92,8 +96,18 @@
             mQsbInsettable = (HorizontalInsettableView) hotseat.getQsb();
         }
 
+        handleTransitionOnNextFrame();
+    }
+
+    private void handleTransitionOnNextFrame() {
+        Trace.asyncTraceBegin(Trace.TRACE_TAG_APP,
+                TRACE_WAIT_TO_HANDLE_UNFOLD_TRANSITION, /* cookie= */ 0);
         OneShotPreDrawListener.add(mLauncher.getWorkspace(),
-                () -> mProgressProvider.setReadyToHandleTransition(true));
+                () -> {
+                    Trace.asyncTraceEnd(Trace.TRACE_TAG_APP,
+                            TRACE_WAIT_TO_HANDLE_UNFOLD_TRANSITION, /* cookie= */ 0);
+                    mProgressProvider.setReadyToHandleTransition(true);
+                });
     }
 
     /**
diff --git a/quickstep/src/com/android/quickstep/views/TaskView.java b/quickstep/src/com/android/quickstep/views/TaskView.java
index aa37fdd..b23c873 100644
--- a/quickstep/src/com/android/quickstep/views/TaskView.java
+++ b/quickstep/src/com/android/quickstep/views/TaskView.java
@@ -600,6 +600,19 @@
         return mTaskIdContainer[1] != -1;
     }
 
+    /**
+     * Finds the index of a given taskId within this TaskView, or -1 if the TaskView does not
+     * contain it. For grouped tasks (of two), this is 0 or 1; for solo tasks, it is 0.
+     */
+    public int getIndexOfTask(int taskId) {
+        for (int i = 0; i < mTaskIdContainer.length; i++) {
+            if (mTaskIdContainer[i] == taskId) {
+                return i;
+            }
+        }
+        return -1;
+    }
+
     public TaskThumbnailView getThumbnail() {
         return mSnapshotView;
     }
diff --git a/res/values-night-v31/colors.xml b/res/values-night-v31/colors.xml
index 54d6d88..2c1bc90 100644
--- a/res/values-night-v31/colors.xml
+++ b/res/values-night-v31/colors.xml
@@ -24,6 +24,4 @@
     <color name="home_settings_thumb_off_color">@android:color/system_neutral2_300</color>
     <color name="home_settings_track_on_color">@android:color/system_accent2_700</color>
     <color name="home_settings_track_off_color">@android:color/system_neutral1_700</color>
-
-    <color name="all_apps_button_color">?android:attr/textColorSecondary</color>
 </resources>
\ No newline at end of file
diff --git a/res/values-night/colors.xml b/res/values-night/colors.xml
index 17fe419..4ba77fa 100644
--- a/res/values-night/colors.xml
+++ b/res/values-night/colors.xml
@@ -17,5 +17,5 @@
 -->
 
 <resources>
-    <color name="all_apps_button_color">#BFC8CC</color>
+    <color name="all_apps_button_color">@color/all_apps_button_color_dark</color>
 </resources>
\ No newline at end of file
diff --git a/res/values-v31/colors.xml b/res/values-v31/colors.xml
index cf4f000..63a5454 100644
--- a/res/values-v31/colors.xml
+++ b/res/values-v31/colors.xml
@@ -62,5 +62,6 @@
     <color name="preload_icon_accent_color_dark">@android:color/system_accent1_300</color>
     <color name="preload_icon_background_color_dark">@android:color/system_neutral2_700</color>
 
-    <color name="all_apps_button_color">?android:attr/textColorSecondary</color>
+    <color name="all_apps_button_color_light">@android:color/system_neutral2_700</color>
+    <color name="all_apps_button_color_dark">@android:color/system_neutral2_200</color>
 </resources>
diff --git a/res/values/colors.xml b/res/values/colors.xml
index 9d6927b..ef7bf91 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -80,7 +80,9 @@
     <color name="workspace_accent_color_light">#ff8df5e3</color>
     <color name="workspace_accent_color_dark">#ff3d665f</color>
 
-    <color name="all_apps_button_color">#40484B</color>
+    <color name="all_apps_button_color">@color/all_apps_button_color_light</color>
+    <color name="all_apps_button_color_light">#40484B</color>
+    <color name="all_apps_button_color_dark">#BFC8CC</color>
 
     <color name="preload_icon_accent_color_light">#00668B</color>
     <color name="preload_icon_background_color_light">#B5CAD7</color>
diff --git a/src/com/android/launcher3/views/IconButtonView.java b/src/com/android/launcher3/views/IconButtonView.java
index dd48c99..64e9327 100644
--- a/src/com/android/launcher3/views/IconButtonView.java
+++ b/src/com/android/launcher3/views/IconButtonView.java
@@ -30,6 +30,8 @@
 import android.os.Build;
 import android.util.AttributeSet;
 
+import androidx.annotation.ColorInt;
+
 import com.android.launcher3.BubbleTextView;
 import com.android.launcher3.icons.BaseIconFactory;
 import com.android.launcher3.icons.FastBitmapDrawable;
@@ -68,6 +70,14 @@
         }
     }
 
+    /** Updates the color of the icon's foreground layer. */
+    public void setForegroundTint(@ColorInt int tintColor) {
+        FastBitmapDrawable icon = getIcon();
+        if (icon instanceof IconDrawable) {
+            ((IconDrawable) icon).mFg.setTint(tintColor);
+        }
+    }
+
     private static class IconDrawable extends FastBitmapDrawable {
 
         private final Drawable mFg;
