diff --git a/Habitica/res/values/values.xml b/Habitica/res/values/values.xml
index 8ad4f79ff..0ff078d1d 100644
--- a/Habitica/res/values/values.xml
+++ b/Habitica/res/values/values.xml
@@ -250,8 +250,8 @@
- mental_health
- getting_organized
- self_improvement
- - spirituality'
- - time_management'
+ - spirituality
+ - time_management
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmTaskLocalRepository.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmTaskLocalRepository.kt
index 0803d8525..12ba7029a 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmTaskLocalRepository.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmTaskLocalRepository.kt
@@ -125,9 +125,14 @@ class RealmTaskLocalRepository(realm: Realm) : RealmBaseLocalRepository(realm),
}
private fun removeOldTasks(userID: String, onlineTaskList: List) {
+ val groupIDs = onlineTaskList.map { it.group?.groupID }.distinct().toTypedArray()
if (realm.isClosed) return
val localTasks = realm.where(Task::class.java)
+ .beginGroup()
.equalTo("userId", userID)
+ .or()
+ .`in`("group.groupID", groupIDs)
+ .endGroup()
.beginGroup()
.beginGroup()
.equalTo("typeValue", TaskType.TODO.value)
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialog.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialog.kt
index d798a68f2..622503bb8 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialog.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialog.kt
@@ -367,7 +367,7 @@ class PurchaseDialog(context: Context, component: UserComponent?, val item: Shop
} else if (shopItem.purchaseType == "debuffPotion") {
observable = userRepository.useSkill(shopItem.key, null).cast(Any::class.java)
} else if (shopItem.purchaseType == "customization" || shopItem.purchaseType == "background" || shopItem.purchaseType == "backgrounds" || shopItem.purchaseType == "customizationSet") {
- observable = userRepository.unlockPath(item.unlockPath ?: "", item.value).cast(Any::class.java)
+ observable = userRepository.unlockPath(item.unlockPath ?: "${item.pinType}.${item.key}" ?: "", item.value).cast(Any::class.java)
} else if (shopItem.purchaseType == "debuffPotion") {
observable = userRepository.useSkill(shopItem.key, null).cast(Any::class.java)
} else if (shopItem.purchaseType == "card") {
diff --git a/fastlane/changelog.txt b/fastlane/changelog.txt
index 42df38afd..c2ebf9a44 100644
--- a/fastlane/changelog.txt
+++ b/fastlane/changelog.txt
@@ -1,5 +1,6 @@
-What’s new in version 4.0:
+New in 4.0.1:
-Habitica has a brand new WearOS app for smart watches!
+-Some pesky bug fixes
-Newly designed Backgrounds section
-Ability to filter, preview, and pin Backgrounds
-New bottom sheet designs in Items, Pets & Mounts, and Filters
diff --git a/version.properties b/version.properties
index 2b17cce57..f57b7134a 100644
--- a/version.properties
+++ b/version.properties
@@ -1,2 +1,2 @@
NAME=4.0.1
-CODE=4380
\ No newline at end of file
+CODE=4400
\ No newline at end of file