* fix: make folder background follow Material You accent colors
* fix: spotlessCheck failed
---------
Co-authored-by: John Andrew Camu <werdna.jac@gmail.com>
- Categorize apps using flowerpot and organize into folders
- Add blocking loading dialog during categorization process
- Prevent user cancellation during workspace setup
- Auto-add newly installed apps to appropriate folders
- closes : #5846
* fix: Window Insets crashes on less than Android 11
Signed-off-by: Pun Butrach <pun.butrach@gmail.com>
* Apply suggestion from @validcube
---------
Signed-off-by: Pun Butrach <pun.butrach@gmail.com>
```
Duplicate class kotlinx.android.parcel.IgnoredOnParcel found in modules kotlin-android-extensions-runtime-1.3.72.jar -> kotlin-android-extensions-runtime-1.3.72 (org.jetbrains.kotlin:kotlin-android-extensions-runtime:1.3.72) and kotlin-parcelize-runtime-2.2.20.jar -> kotlin-parcelize-runtime-2.2.20 (org.jetbrains.kotlin:kotlin-parcelize-runtime:2.2.20)
Duplicate class kotlinx.android.parcel.Parceler found in modules kotlin-android-extensions-runtime-1.3.72.jar -> kotlin-android-extensions-runtime-1.3.72 (org.jetbrains.kotlin:kotlin-android-extensions-runtime:1.3.72) and kotlin-parcelize-runtime-2.2.20.jar -> kotlin-parcelize-runtime-2.2.20 (org.jetbrains.kotlin:kotlin-parcelize-runtime:2.2.20)
Duplicate class kotlinx.android.parcel.Parceler$DefaultImpls found in modules kotlin-android-extensions-runtime-1.3.72.jar -> kotlin-android-extensions-runtime-1.3.72 (org.jetbrains.kotlin:kotlin-android-extensions-runtime:1.3.72) and kotlin-parcelize-runtime-2.2.20.jar -> kotlin-parcelize-runtime-2.2.20 (org.jetbrains.kotlin:kotlin-parcelize-runtime:2.2.20)
Duplicate class kotlinx.android.parcel.Parcelize found in modules kotlin-android-extensions-runtime-1.3.72.jar -> kotlin-android-extensions-runtime-1.3.72 (org.jetbrains.kotlin:kotlin-android-extensions-runtime:1.3.72) and kotlin-parcelize-runtime-2.2.20.jar -> kotlin-parcelize-runtime-2.2.20 (org.jetbrains.kotlin:kotlin-parcelize-runtime:2.2.20)
Duplicate class kotlinx.android.parcel.RawValue found in modules kotlin-android-extensions-runtime-1.3.72.jar -> kotlin-android-extensions-runtime-1.3.72 (org.jetbrains.kotlin:kotlin-android-extensions-runtime:1.3.72) and kotlin-parcelize-runtime-2.2.20.jar -> kotlin-parcelize-runtime-2.2.20 (org.jetbrains.kotlin:kotlin-parcelize-runtime:2.2.20)
Duplicate class kotlinx.android.parcel.TypeParceler found in modules kotlin-android-extensions-runtime-1.3.72.jar -> kotlin-android-extensions-runtime-1.3.72 (org.jetbrains.kotlin:kotlin-android-extensions-runtime:1.3.72) and kotlin-parcelize-runtime-2.2.20.jar -> kotlin-parcelize-runtime-2.2.20 (org.jetbrains.kotlin:kotlin-parcelize-runtime:2.2.20)
Duplicate class kotlinx.android.parcel.WriteWith found in modules kotlin-android-extensions-runtime-1.3.72.jar -> kotlin-android-extensions-runtime-1.3.72 (org.jetbrains.kotlin:kotlin-android-extensions-runtime:1.3.72) and kotlin-parcelize-runtime-2.2.20.jar -> kotlin-parcelize-runtime-2.2.20 (org.jetbrains.kotlin:kotlin-parcelize-runtime:2.2.20)
```
* Adds safety check to avoid NPE caused by race condition
- Before: 1. opening the app drawer, 2. uninstalling an app, 3. and quickly opening the popup to personalize it, crashed Lawnchair.
- This was caused by an unconsidered cast: `<...> as LauncherActivityInfo` (while it could be null, if the app was just uninstalled).
- This corrects the cast and adds a safety check
- It is made so it is non regressive
- Note: it will show a short toast to warn about the app not being installed
Replaced the simplistic fuzzy search implementation with a custom rule-based matching engine for app searches.
The new engine prioritizes results based on a hierarchy of match types:
- Exact Match
- Direct Prefix
- Initials
- Token Prefix (Ordered)
- Substring
- All Tokens Present
- Fuzzy Match (via `fuzzywuzzy`)
This provides more predictable and relevant app search results with fewer characters.