diff --git a/Habitica/res/layout/preference_group_footer.xml b/Habitica/res/layout/preference_group_footer.xml
new file mode 100644
index 000000000..894bda6b9
--- /dev/null
+++ b/Habitica/res/layout/preference_group_footer.xml
@@ -0,0 +1,13 @@
+
+
\ No newline at end of file
diff --git a/Habitica/res/values/strings.xml b/Habitica/res/values/strings.xml
index 188ed85a3..d1f8f5528 100644
--- a/Habitica/res/values/strings.xml
+++ b/Habitica/res/values/strings.xml
@@ -1254,4 +1254,5 @@
Time Management + Accountability
Show assigned and open tasks on your personal task lists
Copy shared tasks
+ Group Plan Settings
diff --git a/Habitica/res/xml/preferences_fragment.xml b/Habitica/res/xml/preferences_fragment.xml
index fc1e89013..790a81c03 100644
--- a/Habitica/res/xml/preferences_fragment.xml
+++ b/Habitica/res/xml/preferences_fragment.xml
@@ -193,9 +193,13 @@
+ android:title="@string/group_plan_settings"
+ android:layout="@layout/preference_category"
+ app:isPreferenceVisible="false">
+
+
("groups_category")
+ val footer = groupCategory?.findPreference("groups_footer")
+ footer?.order = 9999
groupCategory?.removeAll()
if (teams.isEmpty()) {
groupCategory?.isVisible = false
@@ -372,7 +374,9 @@ class PreferencesFragment : BasePreferencesFragment(), SharedPreferences.OnShare
groupCategory?.isVisible = true
for (team in teams) {
val newPreference = CheckBoxPreference(context)
- newPreference.title = team.summary
+ newPreference.layoutResource = R.layout.preference_child_summary
+ newPreference.title = getString(R.string.copy_shared_tasks)
+ newPreference.summary = team.summary
newPreference.key = "copy_tasks-${team.id}"
newPreference.onPreferenceChangeListener = Preference.OnPreferenceChangeListener { preference, newValue ->
val currentIds = user?.preferences?.tasks?.mirrorGroupTasks?.toMutableList() ?: mutableListOf()
@@ -388,6 +392,9 @@ class PreferencesFragment : BasePreferencesFragment(), SharedPreferences.OnShare
newPreference.isChecked = user?.preferences?.tasks?.mirrorGroupTasks?.contains(team.id) == true
}
}
+ if (footer != null) {
+ groupCategory.addPreference(footer)
+ }
}
if (configManager.testingLevel() == AppTestingLevel.STAFF || BuildConfig.DEBUG) {
diff --git a/fastlane/changelog.txt b/fastlane/changelog.txt
index c2ebf9a44..3eb9c4730 100644
--- a/fastlane/changelog.txt
+++ b/fastlane/changelog.txt
@@ -1,12 +1,11 @@
-New in 4.0.1:
+New in 4.0.2:
-Habitica has a brand new WearOS app for smart watches!
--Some pesky bug fixes
+-Group Plan subscribers can switch on displaying shared tasks from Settings
+-Past To Do reminders will not constantly show anymore
+-Pet category labels show again
-Newly designed Backgrounds section
-Ability to filter, preview, and pin Backgrounds
-New bottom sheet designs in Items, Pets & Mounts, and Filters
-New Day Start Adjustment interface
--Improvements to task reminder reliability
-Improvements to payment and subscription handling
--Fixes account deletion confirmation prompt
--Fixes task reorder bug for new accounts
--Fixes sprite size in Quest Details preview
+
diff --git a/version.properties b/version.properties
index 105b261d0..91578a429 100644
--- a/version.properties
+++ b/version.properties
@@ -1,2 +1,2 @@
-NAME=4.0.1
-CODE=4470
\ No newline at end of file
+NAME=4.0.2
+CODE=4510
diff --git a/wearos/src/main/java/com/habitrpg/wearos/habitica/data/repositories/TaskRepository.kt b/wearos/src/main/java/com/habitrpg/wearos/habitica/data/repositories/TaskRepository.kt
index cbf784a37..5dcb394b6 100644
--- a/wearos/src/main/java/com/habitrpg/wearos/habitica/data/repositories/TaskRepository.kt
+++ b/wearos/src/main/java/com/habitrpg/wearos/habitica/data/repositories/TaskRepository.kt
@@ -36,7 +36,7 @@ class TaskRepository @Inject constructor(
val result = apiClient.scoreTask(id, direction.text).responseData
if (result != null) {
task.completed = direction == TaskDirection.UP
- task.value += result.delta
+ task.value = (task.value ?: 0.0) + result.delta
if (task.type == TaskType.HABIT) {
if (direction == TaskDirection.UP) {
task.counterUp = task.counterUp?.plus(1) ?: 1