Three more requests from the owner on 12 November 2026.
Search field
- The field scrolls away with the list and comes back at the list's top, so the list has
the whole height once it is scrolled. The field is not turned into a list row. The list
now starts at the top of the drawer instead of under the field and keeps the field's room
as top padding (ActivityAllAppsContainerView.replaceAppsRVContainer and
AdapterHolder.applyPadding); FlexeraDrawer.moveSearchFieldWithList shifts the field by as
much as the list has scrolled, measured from the first row, and cuts it at the same line
the rows are cut at, the lower edge of the status bar.
- With work tabs, a hidden or a floating search field, and during a search, nothing changes.
Alphabet
- A magnifier above the letters stands for the search field. Scrubbing to it jumps the list
to its top; the bubble shows the magnifier. The stretch of edge kept for the strip grows
by one place for it.
- The strip measures its room from where the list's rows start, not from the list's top.
Chosen letter
- A scrub brings the letter's group to the middle of the screen, where the thumb is,
instead of to the top: the group's middle on the list's middle, a long group's header no
higher than 22% of the height. At either end of the list the list stops at its end, so
the first groups stay at the top and the last ones rest at the bottom.
Checked on the Android 17 emulator: scrolling by hand, scrubs to a middle letter, the last
letter and the magnifier, typing a search and leaving it, reopening after a scrub, the hold
and edge gestures, and a row's long-press menu.
Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
PRD M3 (AD-4 to AD-6, AD-17), plus three look changes the owner asked for.
Wave alphabet
- WaveAlphabetView (flexera/src): a strip of letters on the drawer's end edge showing only
letters that have apps. Touching it jumps the list to that letter with a haptic tick; the
letters near the finger bulge away from the edge and reach further the further in the
finger moves; the selected letter is enlarged.
- The strip reserves the edge from the system back gesture and tells the drawer not to
drag closed under a scrub.
- Launcher3's scroll bar is hidden by default and no longer takes touches while hidden.
Swipe up and hold
- NoButtonNavbarToOverviewTouchController reuses its motion-pause detector on an ordinary
swipe up from the home screen: a pause finishes opening the drawer and hands the same
touch to the alphabet. Swipes that start on the navigation bar keep their stock meaning.
Look
- The drawer fades in over the home screen instead of sliding up from the bottom.
- No background panel or drag handle (drawer opacity default 0); the wallpaper keeps
Lawnchair's blur and scrim.
- App names, letter headers and alphabet letters are white with a soft shadow.
Tested on the Android 17 emulator: quick swipe opens the drawer, edge scrub jumps the
list, swipe up and hold opens the drawer and scrubs from mid-screen, Back closes it.
Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
* feat and fix : Add Tilt to swipe pages setting
Replace the multi-level Motion controls with a single Home screen toggle named “Tilt to swipe pages,” positioned below Infinite scrolling. Update the description to explain that tilting the phone moves between pages while rearranging apps or widgets, and make the pan controller use the toggle directly while retaining the existing preference key for compatibility. Fix for "[BUG] Large empty gap between app drawer search bar and app grid when app suggestions are disabled
#7490"
* EDITS : Coderabbit suggested edits for PR #7500
* Coderabbit suggested changes (2) #7500
* Update gradle-daemon-jvm.properties
* Remove unrelated Gradle toolchain changes
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Add docstrings for pan-to-move and all apps header changes
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Add a tilt sensitivity control
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit improves the app drawer search state system to do the following things to match Pixel Launcher:
* Activate zero state only if these conditions are met:
- The drawer search bar is tapped
- The dock search bar is tapped, and matchHotseatQsbStyle is on or AppSearch is the current provider
- The query is cleared
* Improves the search bar animation state to only remove the background and padding when the search bar has focus or has query
* Fixes the search bar end icon animation on tap
* Adds a back state handler in LawnchairLauncher so when back button is pressed, it exits search instead of exiting the app drawer, matching the intention of shouldBackExitSearch.
Remove the double status-bar inset and leftover AOSP header padding so
search, personal/work tabs, and the app grid sit at even gaps. Also
collapse reserved space when the drawer search bar is hidden.
---------
Co-authored-by: Cursor <cursoragent@cursor.com>
* feat: Show clone profile app on allapps
Change-Id: 6a37d0c8b05c9e9fe912401e
Change-Summary: Show cloned app in launcher
Signed-off-by: Pun Butrach <pun.butrach@gmail.com>
* chore: Add Lawnchair comment to AOSP file
Change-Id: 6a37d0c8b05c9e9fe912401e
Change-Summary: Show cloned app in launcher
Signed-off-by: Pun Butrach <pun.butrach@gmail.com>
* chore: Apply suggestions
Change-Id: 6a37d0c8b05c9e9fe912401e
Change-Summary: Show cloned app in launcher
Signed-off-by: Pun Butrach <pun.butrach@gmail.com>
---------
Signed-off-by: Pun Butrach <pun.butrach@gmail.com>
* Fix work profile unpause authentication prompt
Skip credential challenge when enabling/disabling work profile by passing null Intent parameter to requestQuietModeEnabled(). This prevents password/biometric prompts for secure folders when toggling work profile state.
- Use 3-parameter requestQuietModeEnabled() with null Intent on Android P+
- Fallback to 2-parameter version for older Android versions
- Resolves authentication prompt issue when unpausing work profile
* Fix work profile pause/unpause without authentication prompts
* Fix work profile state detection on initial load
Fixed bug where work profile quiet mode flag was not set correctly on initial app load when multiple user profiles exist. Changed direct assignment (=) to OR assignment (|=) to preserve quiet state across all work profiles.
This ensures FLAG_WORK_PROFILE_QUIET_MODE_ENABLED is set properly both on initial load (LoaderTask) and during runtime pause/unpause events (PackageUpdatedTask).
* Add work profile tab customization features
- Add workProfileTabBackgroundColor preference for selected tab color
- Add workProfileTabContainerBackground toggle for scroll protection
- Update DrawableTokens to use custom colors from preferences
- Add UI controls in App Drawer preferences
- Control tab background visibility on scroll
Features:
1. Custom color picker for selected work/personal tab button
2. Toggle to show/hide background protection when scrolling
* Fix work profile state detection bug
- Query UserManager.isQuietModeEnabled() directly for real-time state
- Call updateUserQuietMode() to keep cached state synchronized
- Fixes stale quiet mode state causing incorrect UI display
Root cause: LoaderTask was using cached UserManagerState values that
could become stale if work profile state changed between initialization
and app loading.
* Fix work profile unpause authentication prompt
Skip credential challenge when enabling/disabling work profile by passing null Intent parameter to requestQuietModeEnabled(). This prevents password/biometric prompts for secure folders when toggling work profile state.
- Use 3-parameter requestQuietModeEnabled() with null Intent on Android P+
- Fallback to 2-parameter version for older Android versions
- Resolves authentication prompt issue when unpausing work profile
* Fix work profile pause/unpause without authentication prompts
* Fix work profile state detection on initial load
Fixed bug where work profile quiet mode flag was not set correctly on initial app load when multiple user profiles exist. Changed direct assignment (=) to OR assignment (|=) to preserve quiet state across all work profiles.
This ensures FLAG_WORK_PROFILE_QUIET_MODE_ENABLED is set properly both on initial load (LoaderTask) and during runtime pause/unpause events (PackageUpdatedTask).
* Add work profile tab customization features
- Add workProfileTabBackgroundColor preference for selected tab color
- Add workProfileTabContainerBackground toggle for scroll protection
- Update DrawableTokens to use custom colors from preferences
- Add UI controls in App Drawer preferences
- Control tab background visibility on scroll
Features:
1. Custom color picker for selected work/personal tab button
2. Toggle to show/hide background protection when scrolling
* Fix work profile state detection bug
- Query UserManager.isQuietModeEnabled() directly for real-time state
- Call updateUserQuietMode() to keep cached state synchronized
- Fixes stale quiet mode state causing incorrect UI display
Root cause: LoaderTask was using cached UserManagerState values that
could become stale if work profile state changed between initialization
and app loading.
* Fix spotless formatting in DrawableTokens.kt
* fix: cleanup
---------
Co-authored-by: Ankit Kushwaha <ankkushwaha@microsoft.com>
Co-authored-by: Pun Butrach <pun.butrach@gmail.com>
* feat(ui): Add toggle to disable search bar background in app drawer
* Fix double opacity on the Search Bar's background
- Before, the Search Bar added another -possibly transparent- layer on top of the already existing app drawer background.
- This adds a toggle to disable the double-opacity
- It is made so it is non regressive
Fixes#4158
* style(strings): Fixed inconsistency
Previously broken flow:
- Open All Apps on inner screen
- Drawing controller is set to the AllApps container
- Close All Apps (resting state becomes NORMAL)
- Fold, unlock
- Because we are still in NORMAL, the drawing controller was not
updated. Therefore when the ScrimView draws (alongside all other
views due to Launcher starting), it asks the inner screen's All
Apps container to render its panel on the scrim.
The fix is to remove the drawing controller when All Apps resets,
thereby avoiding trying to draw on the scrim in the first place. The
drawing controller is updated upon the next transition to All Apps,
as usual.
Bug: 426397329
Test: Manual: https://drive.google.com/file/d/1l9qAIkrgFalcO5DABOEIRX1Po3POYzab/view?usp=sharing&resourcekey=0-ccU6q2fbYE6y87ehIKdbEQ
Flag: com.android.launcher3.all_apps_sheet_for_handheld
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:288006fe11bdaec4bd229999619dd7097806620a)
Merged-In: I0a4872e6bd668583d08848a8b9c5f0f1389c4f0f
Change-Id: I0a4872e6bd668583d08848a8b9c5f0f1389c4f0f
This was previously the case, but I think I mistakenly updated this
to include phones with the all_apps_sheet_for_handheld flag at some
point. However, there was also some broken logic with the panel bounds
on phones. panel.getLeft() would be 0 because that's relative to the
container, so we need to do getLeft() + panel.getLeft().
Landscape (camera on left): https://hsv.googleplex.com/5035787895701504
Seascape (camera on right): https://hsv.googleplex.com/6210562886205440
Portrait: https://hsv.googleplex.com/6563945312681984
Tablet: https://hsv.googleplex.com/6704696994562048
Bug: 419235232
Test: See HSVs above compared to before images in the bug
Flag: com.android.launcher3.all_apps_sheet_for_handheld
Change-Id: Id8b6f3367ee94ef22cb917e00518e843553b42d8
Previously we updated many other things, such as the buttons and RV
decorators, but the latest UX guidance is to use the same colors
when blurs are enabled or disabled, other than the panel color.
Note: When Overview blur is enabled, the activity is recreated and
this change is redundant. So this is only done if that flag is off.
Demo with home and taskbar all apps (toggling blur with adb):
https://drive.google.com/file/d/1HzveExKpAERxMVdu7JXQSYeGRwaBNR4_/view?usp=sharing&resourcekey=0-l-dGWOS6aCQjj2KStvwySA
Fix: 413229346
Flag: com.android.launcher3.all_apps_blur
Test: Manual with battery saver and `adb shell wm disable-blur 1` / 0
Change-Id: I55c9b46f0999c574c29a6ac7ae557b1e30d91d15
It reuses the predictive back animation now. In addition, if All
Apps entered directly into the Search state (i.e. via QSB), the
back gesture now scales the whole panel to indicate it will close
and return to the home screen (as opposed to closing Search within
All Apps).
Demo: https://drive.google.com/file/d/1wpaZg3JaSxDMMc62uU-1miP9RaIO10EB/view?usp=drive_link&resourcekey=0-h8qKzuDguwIE2vUDr0H6lQ
Fix: 406523972
Flag: EXEMPT bugfix
Test: Manual
Change-Id: I470d67e03b2d8bbbaa39aea76c7dde639cff62f5
This can help debug issues like the blank all apps issue.
Bug: 393406722
Test: Manual
Flag: EXEMPT bugfix
Change-Id: I0481531313d3633c46e63646511b59e081046cf8