Compare commits

..

57 Commits

Author SHA1 Message Date
Sabe Jones
ee93c8bec5 5.23.0 2024-04-08 15:49:20 -05:00
Sabe Jones
c65e93e514 chore(git): update subproject 2024-04-08 15:49:17 -05:00
Sabe Jones
0fd808727c Squashed commit of the following:
commit 3c3787091a2e8a94857352c3655f60138a3b20b7
Merge: 76a00d6308 76d7f02fe8
Author: Sabe Jones <sabe@habitica.com>
Date:   Mon Apr 8 15:47:35 2024 -0500

    Merge branch 'release' into 2024-04-april-fool-items

commit 76a00d6308997c50ae5f5e9d6170a09a1a8cbac7
Author: Sabe Jones <sabe@habitica.com>
Date:   Thu Mar 28 16:08:39 2024 -0500

    fix(quest): revise rage text

commit c2e13f8af245993f61eb614d6be609c833c2e711
Author: Sabe Jones <sabe@habitica.com>
Date:   Thu Mar 28 12:57:17 2024 -0500

    fix(quest): correct rage and "guscompletion"

commit ecdeb82df998ab75eceae3e877c1758187b1d22c
Author: Sabe Jones <sabe@habitica.com>
Date:   Thu Mar 28 08:55:18 2024 -0500

    fix(events): correct dates and times

commit 232de436bbe7ba4c13f04ed66cc3b8a4a794d884
Author: Sabe Jones <sabe@habitica.com>
Date:   Wed Mar 27 09:03:06 2024 -0500

    fix(content): a few more unruly Fungus

commit 955e6e73387788797d1a83a037f73aa472515cec
Author: Sabe Jones <sabe@habitica.com>
Date:   Wed Mar 27 09:00:03 2024 -0500

    feat(content): wacky potions 2024 by @CuriousMagpie

commit 34b72be4f447f00c31169c4cd6e8ba79655adf8a
Author: Sabe Jones <sabe@habitica.com>
Date:   Wed Mar 27 08:56:27 2024 -0500

    feat(event): AF by @CuriousMagpie
2024-04-08 15:48:32 -05:00
Sabe Jones
76d7f02fe8 5.22.3 2024-04-02 15:20:17 -05:00
Sabe Jones
5a9f2c610a Revert "fix(content): adjust release dates"
This reverts commit 0b230b0a87.
2024-04-02 15:20:04 -05:00
Sabe Jones
8a88d165e6 fix(event): end AF earlier 2024-04-02 11:28:07 -05:00
Sabe Jones
ed790c1c4d 5.22.2 2024-04-01 15:50:13 -05:00
Sabe Jones
0b230b0a87 fix(content): adjust release dates 2024-04-01 15:48:43 -05:00
Sabe Jones
9b72221482 5.22.1 2024-03-28 17:17:32 -05:00
Sabe Jones
ef1f27c09f Squashed commit of the following:
commit 0eb12305a58c148027759ea257f0f287796afdda
Author: Sabe Jones <sabe@habitica.com>
Date:   Thu Mar 28 17:13:05 2024 -0500

    feat(event): start April 1 midnight end April 2 8pm

commit de75cf2b9616ad4fe56051d5644c556bd40b874e
Author: Sabe Jones <sabe@habitica.com>
Date:   Thu Mar 28 08:52:01 2024 -0500

    fix(event): correct start timing

commit 34b72be4f447f00c31169c4cd6e8ba79655adf8a
Author: Sabe Jones <sabe@habitica.com>
Date:   Wed Mar 27 08:56:27 2024 -0500

    feat(event): AF by @CuriousMagpie
2024-03-28 17:17:17 -05:00
Sabe Jones
c762146ec9 fix(quests): egg availability, again 2024-03-26 13:09:41 -05:00
Sabe Jones
39fc6248d6 fix(event): adjust Egg quest release date 2024-03-26 06:48:45 -05:00
Sabe Jones
ff0bb9d005 5.22.0 2024-03-21 15:32:41 -05:00
Sabe Jones
6425afd58d Merge branch 'develop' into release 2024-03-21 15:32:36 -05:00
Weblate
c8498bd4e3 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (131 of 131 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (131 of 131 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (282 of 282 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (427 of 427 strings)

Translated using Weblate (Ukrainian)

Currently translated at 63.5% (1930 of 3035 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (3035 of 3035 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (137 of 137 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (764 of 764 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (140 of 140 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (230 of 230 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (94 of 94 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (131 of 131 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (131 of 131 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (60 of 60 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (282 of 282 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (427 of 427 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (3035 of 3035 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (239 of 239 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (239 of 239 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (182 of 182 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (137 of 137 strings)

Translated using Weblate (Russian)

Currently translated at 29.1% (40 of 137 strings)

Translated using Weblate (Russian)

Currently translated at 29.1% (40 of 137 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (15 of 15 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (764 of 764 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (91 of 91 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (189 of 189 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (110 of 110 strings)

Translated using Weblate (German)

Currently translated at 96.9% (828 of 854 strings)

Translated using Weblate (Japanese)

Currently translated at 100.0% (182 of 182 strings)

Translated using Weblate (Japanese)

Currently translated at 100.0% (282 of 282 strings)

Translated using Weblate (Japanese)

Currently translated at 100.0% (427 of 427 strings)

Translated using Weblate (Japanese)

Currently translated at 98.4% (841 of 854 strings)

Translated using Weblate (Japanese)

Currently translated at 100.0% (110 of 110 strings)

Translated using Weblate (Japanese)

Currently translated at 98.1% (161 of 164 strings)

Translated using Weblate (Korean)

Currently translated at 3.6% (5 of 137 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (113 of 113 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (282 of 282 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (22 of 22 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (427 of 427 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (3035 of 3035 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (239 of 239 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (182 of 182 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (137 of 137 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (54 of 54 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (189 of 189 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (110 of 110 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (164 of 164 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (140 of 140 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (230 of 230 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (94 of 94 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (131 of 131 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (60 of 60 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (282 of 282 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (427 of 427 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (239 of 239 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (110 of 110 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (140 of 140 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (230 of 230 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (56 of 56 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (94 of 94 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (427 of 427 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (182 of 182 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (54 of 54 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 98.0% (749 of 764 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (377 of 377 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (189 of 189 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (110 of 110 strings)

Translated using Weblate (Spanish)

Currently translated at 91.2% (125 of 137 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 98.0% (749 of 764 strings)

Translated using Weblate (Japanese)

Currently translated at 97.8% (418 of 427 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (282 of 282 strings)

Translated using Weblate (Spanish)

Currently translated at 86.1% (118 of 137 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 98.0% (749 of 764 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (377 of 377 strings)

Translated using Weblate (Japanese)

Currently translated at 97.6% (834 of 854 strings)

Translated using Weblate (Japanese)

Currently translated at 97.5% (160 of 164 strings)

Translated using Weblate (Korean)

Currently translated at 74.3% (122 of 164 strings)

Translated using Weblate (Spanish (Latin America))

Currently translated at 100.0% (164 of 164 strings)

Translated using Weblate (Spanish)

Currently translated at 82.4% (113 of 137 strings)

Translated using Weblate (Ukrainian)

Currently translated at 63.5% (1929 of 3035 strings)

Translated using Weblate (German)

Currently translated at 96.7% (739 of 764 strings)

Translated using Weblate (German)

Currently translated at 100.0% (140 of 140 strings)

Translated using Weblate (German)

Currently translated at 94.7% (218 of 230 strings)

Translated using Weblate (French)

Currently translated at 100.0% (60 of 60 strings)

Translated using Weblate (German)

Currently translated at 98.7% (236 of 239 strings)

Translated using Weblate (German)

Currently translated at 97.2% (177 of 182 strings)

Translated using Weblate (German)

Currently translated at 100.0% (377 of 377 strings)

Co-authored-by: Finrod <963505255@qq.com>
Co-authored-by: Jaime Martí <jaumemarti77@icloud.com>
Co-authored-by: Javiera <javipuga99@gmail.com>
Co-authored-by: Kem Kembo <medamamef@gmail.com>
Co-authored-by: Mencius <beautyalinap@gmail.com>
Co-authored-by: Nikita Maximov <ruvemaximus@gmail.com>
Co-authored-by: Polina Reshetnikova <resh4096@gmail.com>
Co-authored-by: Sophie LE MASLE <sophiesuff@gmail.com>
Co-authored-by: Srish <ouawcloud@gmail.com>
Co-authored-by: Tetiana <merekka13@gmail.com>
Co-authored-by: Toro Mor <thomas.bizer@gmx.de>
Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: 윤성열 <existmaster@gmail.com>
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/es_419/
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/ko/
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/de/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/character/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/content/de/
Translate-URL: https://translate.habitica.com/projects/habitica/content/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/death/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/defaulttasks/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/es/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/ko/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/ru/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/front/de/
Translate-URL: https://translate.habitica.com/projects/habitica/front/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/front/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/es/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/uk/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/generic/de/
Translate-URL: https://translate.habitica.com/projects/habitica/generic/uk/
Translate-URL: https://translate.habitica.com/projects/habitica/generic/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/groups/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/groups/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/limited/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/limited/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/loginincentives/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/messages/fr/
Translate-URL: https://translate.habitica.com/projects/habitica/messages/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/npc/uk/
Translate-URL: https://translate.habitica.com/projects/habitica/npc/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/pets/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/quests/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/de/
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/uk/
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/spells/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/de/
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/tasks/de/
Translate-URL: https://translate.habitica.com/projects/habitica/tasks/zh_Hans/
Translation: Habitica/Achievements
Translation: Habitica/Backgrounds
Translation: Habitica/Challenge
Translation: Habitica/Character
Translation: Habitica/Communityguidelines
Translation: Habitica/Content
Translation: Habitica/Death
Translation: Habitica/Defaulttasks
Translation: Habitica/Faq
Translation: Habitica/Front
Translation: Habitica/Gear
Translation: Habitica/Generic
Translation: Habitica/Groups
Translation: Habitica/Limited
Translation: Habitica/Loginincentives
Translation: Habitica/Messages
Translation: Habitica/Npc
Translation: Habitica/Pets
Translation: Habitica/Quests
Translation: Habitica/Questscontent
Translation: Habitica/Spells
Translation: Habitica/Subscriber
Translation: Habitica/Tasks
2024-03-21 21:31:35 +01:00
Natalie
64f5c170d0 update(content): 2024-04 content prebuild (#15176)
* update(content): starting april prebuild

* update(content): april prebuild

* update(content): april prebuild
2024-03-21 15:25:33 -05:00
Sabe Jones
515b62d1ce chore(npm): update package lock 2024-03-15 14:45:24 -05:00
Sabe Jones
7e29c7d624 5.21.0 2024-03-13 16:36:29 -05:00
Sabe Jones
669d24fe43 Merge branch 'develop' into release 2024-03-13 16:36:22 -05:00
Weblate
439451a7e8 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (3035 of 3035 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 98.0% (749 of 764 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (377 of 377 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (131 of 131 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (427 of 427 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (3035 of 3035 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 98.0% (749 of 764 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (47 of 47 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (189 of 189 strings)

Translated using Weblate (Romanian)

Currently translated at 71.7% (165 of 230 strings)

Translated using Weblate (Romanian)

Currently translated at 89.3% (117 of 131 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (239 of 239 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (183 of 183 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (137 of 137 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 98.0% (749 of 764 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (189 of 189 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (3035 of 3035 strings)

Translated using Weblate (Spanish)

Currently translated at 77.3% (106 of 137 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (110 of 110 strings)

Translated using Weblate (Spanish)

Currently translated at 75.1% (103 of 137 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (164 of 164 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (131 of 131 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (282 of 282 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (282 of 282 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (427 of 427 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (3035 of 3035 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (3035 of 3035 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (3035 of 3035 strings)

Translated using Weblate (Spanish)

Currently translated at 64.2% (88 of 137 strings)

Translated using Weblate (Spanish)

Currently translated at 64.2% (88 of 137 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (15 of 15 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (764 of 764 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (164 of 164 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (164 of 164 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (164 of 164 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (164 of 164 strings)

Translated using Weblate (Spanish)

Currently translated at 99.5% (3020 of 3035 strings)

Translated using Weblate (German)

Currently translated at 100.0% (8 of 8 strings)

Translated using Weblate (German)

Currently translated at 89.6% (2720 of 3035 strings)

Translated using Weblate (German)

Currently translated at 97.9% (234 of 239 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 98.0% (749 of 764 strings)

Translated using Weblate (German)

Currently translated at 96.4% (737 of 764 strings)

Translated using Weblate (German)

Currently translated at 98.1% (108 of 110 strings)

Translated using Weblate (German)

Currently translated at 96.1% (821 of 854 strings)

Translated using Weblate (German)

Currently translated at 98.5% (138 of 140 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (230 of 230 strings)

Translated using Weblate (German)

Currently translated at 100.0% (60 of 60 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 99.9% (3034 of 3035 strings)

Translated using Weblate (Spanish)

Currently translated at 99.2% (3013 of 3035 strings)

Translated using Weblate (German)

Currently translated at 96.6% (231 of 239 strings)

Translated using Weblate (German)

Currently translated at 98.9% (187 of 189 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (110 of 110 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (854 of 854 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (854 of 854 strings)

Translated using Weblate (French)

Currently translated at 100.0% (131 of 131 strings)

Translated using Weblate (Spanish)

Currently translated at 98.5% (2991 of 3035 strings)

Translated using Weblate (French)

Currently translated at 100.0% (110 of 110 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (113 of 113 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (60 of 60 strings)

Translated using Weblate (Spanish)

Currently translated at 98.1% (2979 of 3035 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (91 of 91 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (110 of 110 strings)

Translated using Weblate (German)

Currently translated at 89.4% (2716 of 3035 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (140 of 140 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (230 of 230 strings)

Translated using Weblate (Russian)

Currently translated at 99.5% (229 of 230 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (113 of 113 strings)

Translated using Weblate (German)

Currently translated at 95.5% (108 of 113 strings)

Translated using Weblate (German)

Currently translated at 98.4% (129 of 131 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (22 of 22 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (427 of 427 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (3035 of 3035 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (239 of 239 strings)

Translated using Weblate (German)

Currently translated at 89.3% (2712 of 3035 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (137 of 137 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (54 of 54 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 98.0% (749 of 764 strings)

Translated using Weblate (German)

Currently translated at 100.0% (47 of 47 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (189 of 189 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (109 of 109 strings)

Translated using Weblate (German)

Currently translated at 98.1% (107 of 109 strings)

Translated using Weblate (German)

Currently translated at 95.1% (813 of 854 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (159 of 159 strings)

Co-authored-by: AGM <yoartgm@gmail.com>
Co-authored-by: Céu <marcel.ufscar@gmail.com>
Co-authored-by: Delta S <deseji93@gmail.com>
Co-authored-by: Finrod <963505255@qq.com>
Co-authored-by: Gabriela <gabisouzars5@gmail.com>
Co-authored-by: Ike Osenberg <ike.osenberg@gmail.com>
Co-authored-by: Jaime Martí <jaumemarti77@icloud.com>
Co-authored-by: Javiera <javipuga99@gmail.com>
Co-authored-by: Nik Ermilov <edaonh@gmail.com>
Co-authored-by: Quim Martínez Lara <quimml60@gmail.com>
Co-authored-by: Raul Royo Rubio <royografico@gmail.com>
Co-authored-by: Sophie LE MASLE <sophiesuff@gmail.com>
Co-authored-by: Toro Mor <thomas.bizer@gmx.de>
Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: fanxiaoxi <fanxiaoxi1115@gmail.com>
Co-authored-by: Χρήστος Joia <hristosjoia@gmail.com>
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/es/
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/ru/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/de/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/es/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/de/
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/es/
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/fr/
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/character/de/
Translate-URL: https://translate.habitica.com/projects/habitica/character/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/content/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/contrib/de/
Translate-URL: https://translate.habitica.com/projects/habitica/contrib/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/death/es/
Translate-URL: https://translate.habitica.com/projects/habitica/defaulttasks/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/es/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/front/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/de/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/es/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/generic/de/
Translate-URL: https://translate.habitica.com/projects/habitica/generic/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/groups/es/
Translate-URL: https://translate.habitica.com/projects/habitica/groups/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/limited/es/
Translate-URL: https://translate.habitica.com/projects/habitica/loginincentives/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/messages/de/
Translate-URL: https://translate.habitica.com/projects/habitica/messages/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/npc/de/
Translate-URL: https://translate.habitica.com/projects/habitica/npc/es/
Translate-URL: https://translate.habitica.com/projects/habitica/npc/fr/
Translate-URL: https://translate.habitica.com/projects/habitica/npc/ro/
Translate-URL: https://translate.habitica.com/projects/habitica/npc/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/overview/de/
Translate-URL: https://translate.habitica.com/projects/habitica/pets/de/
Translate-URL: https://translate.habitica.com/projects/habitica/pets/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/de/
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/es/
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/es/
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/ro/
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/ru/
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/tasks/de/
Translate-URL: https://translate.habitica.com/projects/habitica/tasks/zh_Hans/
Translation: Habitica/Achievements
Translation: Habitica/Backgrounds
Translation: Habitica/Challenge
Translation: Habitica/Character
Translation: Habitica/Communityguidelines
Translation: Habitica/Content
Translation: Habitica/Contrib
Translation: Habitica/Death
Translation: Habitica/Defaulttasks
Translation: Habitica/Faq
Translation: Habitica/Front
Translation: Habitica/Gear
Translation: Habitica/Generic
Translation: Habitica/Groups
Translation: Habitica/Limited
Translation: Habitica/Loginincentives
Translation: Habitica/Messages
Translation: Habitica/Npc
Translation: Habitica/Overview
Translation: Habitica/Pets
Translation: Habitica/Questscontent
Translation: Habitica/Subscriber
Translation: Habitica/Tasks
2024-03-13 22:35:45 +01:00
Natalie
3e5226de67 update(content): add 2024 Spring Fling (#15168)
* update(content): add spring fling images, items, and placeholder text

* update(dates) : set canonical dates

* update(dates/quests): set canonical dates for both, add egg quest availability

* update(date): update quest availability start date

* update(content): add magic hatching potions

* fix(dates): canonical dates

* fix(event): add correct event name to potions

* fix(dates): canonical dates

* fix(dates): fix UTC offset, remove package.json and package-lock.json

* fix(dates): canonical

* fix: re-added package.json and package-lock.json

* update(content): add gear strings

* update(content): add Rogue off-hand string, canonical dates
2024-03-13 16:34:41 -05:00
Sabe Jones
8c7a0b4861 5.20.0 2024-03-11 10:00:05 -05:00
Sabe Jones
8fa91a3805 chore(node): upgrade to Node 20 2024-03-11 09:59:57 -05:00
Sabe Jones
c554a1a57d 5.19.1 2024-03-04 14:25:14 -06:00
Sabe Jones
9406f0fa22 Merge branch 'develop' into release 2024-03-04 14:25:10 -06:00
Weblate
d081a2bdba Translated using Weblate (French)
Currently translated at 100.0% (427 of 427 strings)

Translated using Weblate (French)

Currently translated at 100.0% (164 of 164 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (230 of 230 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (427 of 427 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 99.9% (3034 of 3035 strings)

Translated using Weblate (Portuguese)

Currently translated at 58.4% (1775 of 3035 strings)

Translated using Weblate (Romanian)

Currently translated at 95.3% (228 of 239 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (239 of 239 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 99.2% (136 of 137 strings)

Translated using Weblate (Russian)

Currently translated at 97.6% (746 of 764 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (91 of 91 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (377 of 377 strings)

Translated using Weblate (German)

Currently translated at 94.4% (103 of 109 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (164 of 164 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (164 of 164 strings)

Translated using Weblate (German)

Currently translated at 100.0% (164 of 164 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (239 of 239 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (183 of 183 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (137 of 137 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 71.4% (65 of 91 strings)

Translated using Weblate (Russian)

Currently translated at 97.2% (106 of 109 strings)

Translated using Weblate (Portuguese)

Currently translated at 96.7% (826 of 854 strings)

Translated using Weblate (Russian)

Currently translated at 99.3% (160 of 161 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (56 of 56 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (427 of 427 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (137 of 137 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (137 of 137 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (189 of 189 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (109 of 109 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 75.9% (104 of 137 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 73.7% (101 of 137 strings)

Translated using Weblate (French)

Currently translated at 100.0% (3035 of 3035 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (230 of 230 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (3035 of 3035 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 99.9% (3034 of 3035 strings)

Translated using Weblate (Russian)

Currently translated at 21.8% (30 of 137 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 91.2% (125 of 137 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (854 of 854 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (854 of 854 strings)

Translated using Weblate (French)

Currently translated at 100.0% (230 of 230 strings)

Translated using Weblate (French)

Currently translated at 99.9% (3033 of 3035 strings)

Translated using Weblate (French)

Currently translated at 99.9% (3033 of 3035 strings)

Translated using Weblate (Spanish)

Currently translated at 97.6% (2965 of 3035 strings)

Translated using Weblate (Portuguese)

Currently translated at 25.5% (35 of 137 strings)

Translated using Weblate (Portuguese)

Currently translated at 96.0% (820 of 854 strings)

Translated using Weblate (French)

Currently translated at 100.0% (854 of 854 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (183 of 183 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (282 of 282 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (377 of 377 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (847 of 847 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (229 of 229 strings)

Translated using Weblate (Spanish)

Currently translated at 98.4% (2965 of 3013 strings)

Co-authored-by: Alcatraz Huo <alrcatraz@gmail.com>
Co-authored-by: Céu <marcel.ufscar@gmail.com>
Co-authored-by: Finrod <963505255@qq.com>
Co-authored-by: Gabriela <gabisouzars5@gmail.com>
Co-authored-by: Icaro <icaro.mascarenhas@outlook.com>
Co-authored-by: Jaime Martí <jaumemarti77@icloud.com>
Co-authored-by: Natalie Luhrs <eilatan@gmail.com>
Co-authored-by: Phyan Phoenix <kirill.farick@gmail.com>
Co-authored-by: Sophie LE MASLE <sophiesuff@gmail.com>
Co-authored-by: Toro Mor <thomas.bizer@gmx.de>
Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: YuyingLiang <standingfish.malina@gmail.com>
Co-authored-by: Χρήστος Joia <hristosjoia@gmail.com>
Co-authored-by: Данила Мальцев <maltsev-danila@inbox.ru>
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/de/
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/fr/
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/ru/
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/fr/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/pt/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/uk/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/de/
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/ru/
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/character/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/content/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/content/uk/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/pt/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/ru/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/front/uk/
Translate-URL: https://translate.habitica.com/projects/habitica/front/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/es/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/fr/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/pt/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/generic/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/generic/ro/
Translate-URL: https://translate.habitica.com/projects/habitica/generic/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/groups/fr/
Translate-URL: https://translate.habitica.com/projects/habitica/groups/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/groups/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/limited/uk/
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/ru/
Translate-URL: https://translate.habitica.com/projects/habitica/spells/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/es/
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/fr/
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/zh_Hans/
Translation: Habitica/Achievements
Translation: Habitica/Backgrounds
Translation: Habitica/Challenge
Translation: Habitica/Character
Translation: Habitica/Communityguidelines
Translation: Habitica/Content
Translation: Habitica/Faq
Translation: Habitica/Front
Translation: Habitica/Gear
Translation: Habitica/Generic
Translation: Habitica/Groups
Translation: Habitica/Limited
Translation: Habitica/Questscontent
Translation: Habitica/Spells
Translation: Habitica/Subscriber
2024-03-04 20:03:54 +01:00
Sabe Jones
dac09a9027 chore(news): remove obsolete link 2024-02-29 15:38:03 -06:00
Sabe Jones
f8e56c02f0 Squashed commit of the following:
commit d30dff2311087ff2fe5f3e2a913c594abeee6b0e
Author: Sabe Jones <sabe@habitica.com>
Date:   Tue Feb 27 16:01:11 2024 -0600

    fix(challenge): move isOfficial to mount process

commit ae52dca3cd0b4fd490f07b1979049803ce2f1e2f
Merge: 2b20ff1e46 2c6e82a58a
Author: Sabe Jones <sabe@habitica.com>
Date:   Tue Feb 27 15:20:40 2024 -0600

    Merge branch 'release' into phillip/challenges_official

commit 2b20ff1e46b1447eac3f9dbdf29566154c9fa656
Author: Sabe Jones <sabe@habitica.com>
Date:   Wed Feb 14 15:31:22 2024 -0600

    fix(tests): correct lint and TypeError

commit 5dae5c716f11db4c652e423eab43805ddfac3455
Merge: 29d9edc7aa 1a3c2f64e4
Author: Sabe Jones <sabe@habitica.com>
Date:   Wed Feb 14 15:01:18 2024 -0600

    Merge branch 'release' into phillip/challenges_official

commit 29d9edc7aa7445d24f5be24ca923719a4ab5f70d
Author: Sabe Jones <sabe@habitica.com>
Date:   Wed Feb 14 14:41:16 2024 -0600

    fix(challenges): don't momentarily show Report on official

commit f994d12775107cba7ec816ee522cfeb0c69ef567
Author: Phillip Thelen <phillip@habitica.com>
Date:   Tue Feb 13 10:08:08 2024 +0100

    hide report button for official challenges

commit ac06dcaca701b91913d5fc5307626b1616a9e0e8
Author: Phillip Thelen <phillip@habitica.com>
Date:   Tue Feb 13 10:04:49 2024 +0100

    prevent official challenges from being flagged

commit a07ce1e6de66a2c833c6f392cf396a7743ca0f97
Author: Phillip Thelen <phillip@habitica.com>
Date:   Mon Feb 5 19:12:17 2024 +0100

    test shouldn’t be exclusive

commit 4c2436a1a0fa905530b7e1cd66f75a2b07be5810
Author: Phillip Thelen <phillip@habitica.com>
Date:   Mon Feb 5 19:11:20 2024 +0100

    remove log

commit 292f3a578d51fd08c572afc574cc73d08356f46a
Author: Phillip Thelen <phillip@habitica.com>
Date:   Mon Feb 5 19:10:13 2024 +0100

    Automatically set official field on challenges if habitica_official cateogory is set
2024-02-28 14:31:05 -06:00
Sabe Jones
56f73a35b0 5.19.0 2024-02-27 17:31:59 -06:00
Sabe Jones
3842b633d7 Merge branch 'develop' into release 2024-02-27 17:27:50 -06:00
Natalie
caa73057d8 update(content): March 2024 content (#15161)
* feat(content): add February subscriber item, backgrounds, and enchanted armoire gear

* feat(content): add spritesheet

* feat(content): bug smashing

* fix(file): revert package.json to release

* feat(content): add quest bundles

* feat(content): add new achievement

* feat(content): add achievement script

* fix(curlies): remove stray curly boi

* fix(date): add canonical date

* fix(dates): updated background & armoire to canonical dates

* feat(content): add armoire strings & stats

* fix(migration): Golden Squirrel

* fix(backgrounds): trim extra whitespace

* fix(test): cuddle timing

---------

Co-authored-by: Sabe Jones <sabe@habitica.com>
Co-authored-by: Sabe Jones <sabrecat@gmail.com>
2024-02-27 17:25:57 -06:00
Weblate
72d83d242d Translated using Weblate (Spanish (Latin America))
Currently translated at 88.4% (749 of 847 strings)

Translated using Weblate (Spanish (Latin America))

Currently translated at 100.0% (161 of 161 strings)

Translated using Weblate (French)

Currently translated at 100.0% (3023 of 3023 strings)

Translated using Weblate (Spanish)

Currently translated at 96.7% (2914 of 3013 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 64.9% (89 of 137 strings)

Translated using Weblate (Spanish)

Currently translated at 58.3% (80 of 137 strings)

Translated using Weblate (Spanish)

Currently translated at 96.1% (2897 of 3013 strings)

Translated using Weblate (Spanish)

Currently translated at 95.8% (2889 of 3013 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (3023 of 3023 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 64.2% (88 of 137 strings)

Translated using Weblate (Czech)

Currently translated at 18.9% (26 of 137 strings)

Translated using Weblate (Czech)

Currently translated at 87.0% (737 of 847 strings)

Translated using Weblate (Croatian)

Currently translated at 6.5% (9 of 137 strings)

Translated using Weblate (Croatian)

Currently translated at 53.7% (123 of 229 strings)

Translated using Weblate (Croatian)

Currently translated at 56.5% (1708 of 3023 strings)

Translated using Weblate (Czech)

Currently translated at 86.2% (113 of 131 strings)

Translated using Weblate (Ukrainian)

Currently translated at 63.4% (1918 of 3023 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 99.9% (3020 of 3023 strings)

Translated using Weblate (Czech)

Currently translated at 66.9% (2023 of 3023 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 63.5% (87 of 137 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 84.6% (116 of 137 strings)

Translated using Weblate (Czech)

Currently translated at 16.7% (23 of 137 strings)

Translated using Weblate (Czech)

Currently translated at 100.0% (377 of 377 strings)

Translated using Weblate (Czech)

Currently translated at 97.8% (185 of 189 strings)

Translated using Weblate (Czech)

Currently translated at 85.9% (728 of 847 strings)

Translated using Weblate (Czech)

Currently translated at 99.3% (160 of 161 strings)

Translated using Weblate (Polish)

Currently translated at 93.0% (788 of 847 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 99.1% (227 of 229 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 99.8% (3019 of 3023 strings)

Translated using Weblate (French)

Currently translated at 99.7% (3016 of 3023 strings)

Translated using Weblate (Spanish (Latin America))

Currently translated at 100.0% (60 of 60 strings)

Translated using Weblate (Spanish (Latin America))

Currently translated at 94.3% (216 of 229 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (229 of 229 strings)

Translated using Weblate (Spanish (Latin America))

Currently translated at 88.6% (250 of 282 strings)

Translated using Weblate (Spanish (Latin America))

Currently translated at 100.0% (377 of 377 strings)

Translated using Weblate (Spanish (Latin America))

Currently translated at 85.3% (723 of 847 strings)

Translated using Weblate (Spanish (Latin America))

Currently translated at 95.6% (154 of 161 strings)

Translated using Weblate (Spanish (Latin America))

Currently translated at 95.6% (154 of 161 strings)

Translated using Weblate (Spanish (Latin America))

Currently translated at 95.6% (154 of 161 strings)

Translated using Weblate (Spanish)

Currently translated at 97.5% (275 of 282 strings)

Translated using Weblate (French)

Currently translated at 100.0% (427 of 427 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 99.6% (3013 of 3023 strings)

Translated using Weblate (French)

Currently translated at 99.4% (3005 of 3023 strings)

Translated using Weblate (Spanish)

Currently translated at 94.7% (2855 of 3013 strings)

Translated using Weblate (Spanish)

Currently translated at 43.0% (59 of 137 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (91 of 91 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (377 of 377 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (847 of 847 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (161 of 161 strings)

Co-authored-by: Alberto Pesquera <dashmilel@gmail.com>
Co-authored-by: Alexandre Colombier <arsthenos.colombier@gmail.com>
Co-authored-by: Finrod <963505255@qq.com>
Co-authored-by: Gean Ribeiro <geanribeirok@gmail.com>
Co-authored-by: Ivona Muškinja <ivonamuskinja@gmail.com>
Co-authored-by: Jaime Martí <jaumemarti77@icloud.com>
Co-authored-by: Javiera <javipuga99@gmail.com>
Co-authored-by: Kae <karengong@yeah.net>
Co-authored-by: Karolína Kolčavová <kaja-kolca@seznam.cz>
Co-authored-by: Leslie Munguía <moongeeuh@gmail.com>
Co-authored-by: Marcin Mermela <fishexo@gmail.com>
Co-authored-by: Natalie Luhrs <eilatan@gmail.com>
Co-authored-by: Sophie LE MASLE <sophiesuff@gmail.com>
Co-authored-by: Weblate <noreply@weblate.org>
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/cs/
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/es_419/
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/pl/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/cs/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/es/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/es_419/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/pl/
Translate-URL: https://translate.habitica.com/projects/habitica/character/cs/
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/es/
Translate-URL: https://translate.habitica.com/projects/habitica/content/cs/
Translate-URL: https://translate.habitica.com/projects/habitica/content/es/
Translate-URL: https://translate.habitica.com/projects/habitica/content/es_419/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/cs/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/es/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/hr/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/cs/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/es/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/fr/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/hr/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/uk/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/groups/fr/
Translate-URL: https://translate.habitica.com/projects/habitica/limited/es/
Translate-URL: https://translate.habitica.com/projects/habitica/limited/es_419/
Translate-URL: https://translate.habitica.com/projects/habitica/messages/es_419/
Translate-URL: https://translate.habitica.com/projects/habitica/npc/cs/
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/es/
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/es_419/
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/hr/
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/pt_BR/
Translation: Habitica/Achievements
Translation: Habitica/Backgrounds
Translation: Habitica/Character
Translation: Habitica/Communityguidelines
Translation: Habitica/Content
Translation: Habitica/Faq
Translation: Habitica/Gear
Translation: Habitica/Groups
Translation: Habitica/Limited
Translation: Habitica/Messages
Translation: Habitica/Npc
Translation: Habitica/Subscriber
2024-02-27 00:42:12 +01:00
Sabe Jones
2c6e82a58a fix(groups): remove more "Guild" refs 2024-02-21 17:24:16 -06:00
Sabe Jones
e1f0bccb81 fix(backgrounds): fix missing icon and some canvases 2024-02-20 17:58:27 -06:00
Sabe Jones
cd706445f6 5.18.1 2024-02-15 14:50:54 -06:00
Sabe Jones
3896fdd6a2 Merge branch 'develop' into release 2024-02-15 14:50:49 -06:00
Natalie
1842480088 Update Melior Image (#15116)
* add melior.svg

* update melior on header (app & static), footer, and loading

* update loading screen

* update static screens, fix double meliors

* update melior + wordmark size and adjust static page menu spacing

* update package.json

* update index.html, forgot password page, and the static header

* various updates

* static header update

* update mobile web view

* update login page menu bar

* updated purple logo

* removed extraneous class

* update bottom padding on login page(s)

* fix(lint): remove unneeded rule escape

---------

Co-authored-by: Sabe Jones <sabe@habitica.com>
Co-authored-by: Sabe Jones <sabrecat@gmail.com>
2024-02-15 20:48:42 +00:00
Weblate
bb850867c8 Translated using Weblate (Japanese)
Currently translated at 100.0% (427 of 427 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (113 of 113 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (427 of 427 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 99.4% (3007 of 3023 strings)

Translated using Weblate (Portuguese)

Currently translated at 50.5% (46 of 91 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 99.2% (3001 of 3023 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 83.9% (115 of 137 strings)

Translated using Weblate (French)

Currently translated at 100.0% (229 of 229 strings)

Translated using Weblate (French)

Currently translated at 100.0% (282 of 282 strings)

Translated using Weblate (French)

Currently translated at 99.7% (426 of 427 strings)

Translated using Weblate (French)

Currently translated at 99.2% (3000 of 3023 strings)

Translated using Weblate (French)

Currently translated at 100.0% (377 of 377 strings)

Translated using Weblate (French)

Currently translated at 100.0% (847 of 847 strings)

Translated using Weblate (Spanish)

Currently translated at 94.3% (2842 of 3013 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 99.5% (238 of 239 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 83.2% (114 of 137 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (764 of 764 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (377 of 377 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (847 of 847 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 56.9% (78 of 137 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 98.0% (749 of 764 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (3023 of 3023 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 56.2% (77 of 137 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 98.0% (749 of 764 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (282 of 282 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 54.0% (74 of 137 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 77.3% (106 of 137 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (54 of 54 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 98.0% (749 of 764 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 98.1% (750 of 764 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (189 of 189 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (259 of 259 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 98.4% (255 of 259 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 98.0% (253 of 258 strings)

Translated using Weblate (Spanish)

Currently translated at 93.3% (2813 of 3013 strings)

Co-authored-by: Alexandre Colombier <arsthenos.colombier@gmail.com>
Co-authored-by: Finrod <963505255@qq.com>
Co-authored-by: Gean Ribeiro <geanribeirok@gmail.com>
Co-authored-by: Jaime Martí <jaumemarti77@icloud.com>
Co-authored-by: Luã Fhelyp Pacheco Guimarães <fhelypg@gmail.com>
Co-authored-by: TOMA Mitsuru <toma0001@gmail.com>
Co-authored-by: Vinicius Rodrigues <suburbanizar@gmail.com>
Co-authored-by: Weblate <noreply@weblate.org>
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/fr/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/character/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/pt/
Translate-URL: https://translate.habitica.com/projects/habitica/content/fr/
Translate-URL: https://translate.habitica.com/projects/habitica/content/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/defaulttasks/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/es/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/fr/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/generic/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/groups/fr/
Translate-URL: https://translate.habitica.com/projects/habitica/groups/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/groups/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/limited/fr/
Translate-URL: https://translate.habitica.com/projects/habitica/limited/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/pets/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/settings/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/settings/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/fr/
Translation: Habitica/Backgrounds
Translation: Habitica/Character
Translation: Habitica/Communityguidelines
Translation: Habitica/Content
Translation: Habitica/Defaulttasks
Translation: Habitica/Faq
Translation: Habitica/Gear
Translation: Habitica/Generic
Translation: Habitica/Groups
Translation: Habitica/Limited
Translation: Habitica/Pets
Translation: Habitica/Questscontent
Translation: Habitica/Settings
Translation: Habitica/Subscriber
2024-02-15 17:42:11 +01:00
Sabe Jones
1a3c2f64e4 5.18.0 2024-02-08 14:50:11 -06:00
Sabe Jones
2f42422d35 Squashed commit of the following:
commit 44b1c8c7ba8b45cb682973fb89b70445d0f5c478
Merge: 489c15b7fd 4dadb64af0
Author: Sabe Jones <sabe@habitica.com>
Date:   Thu Feb 8 14:49:05 2024 -0600

    Merge branch 'release' into phillip/panel_profile

commit 489c15b7fd
Author: Phillip Thelen <phillip@habitica.com>
Date:   Wed Dec 14 13:29:32 2022 +0100

    allow profiles to be edited in admin panel

commit 1afaaf4089
Author: Phillip Thelen <phillip@habitica.com>
Date:   Wed Dec 14 12:50:47 2022 +0100

    include month for next hourglass date in admin panel
2024-02-08 14:49:37 -06:00
Phillip Thelen
4dadb64af0 Add Customizations and Achievements to admin panel (#15114)
* allow owned customizations to be edited in admin panel

* Allow subscription termination date to be edited more flexibly

* begin adding achievements to admin panel page

* better display for customizations in admin panel

* allow achievements to be modified in admin panel

* fix lint

* fix errors

* Improve how achievements, customizations and items are listed in admin panel

* fix naming

* fix lint error

* Fix issues with achievements in admin panel and add some tests

* handle some edgecases better

* Fix lint

* Fix sort/search on member selection modal (#15066)

* fix(birthday): correct birthday robe ownership check

* feat(content): add February items (#15090)

* update(content): add February 2024 items

* feat(content): add October content

* feat(content):update February Content

* feat(content): finish up February content

* fix(backgrounds): tweak consistency

* fix(strings): remove extra whitespace

* fix(event): add missing Valentine features

---------

Co-authored-by: Sabe Jones <sabrecat@gmail.com>
Co-authored-by: Sabe Jones <sabe@habitica.com>

* 5.17.0

* Translated using Weblate (Ukrainian)

Currently translated at 63.6% (1918 of 3013 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (189 of 189 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (228 of 228 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (94 of 94 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (131 of 131 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (61 of 61 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (283 of 283 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (283 of 283 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (427 of 427 strings)

Translated using Weblate (Spanish)

Currently translated at 88.5% (2668 of 3013 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (239 of 239 strings)

Translated using Weblate (Bulgarian)

Currently translated at 15.3% (21 of 137 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 97.9% (748 of 764 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 88.0% (96 of 109 strings)

Translated using Weblate (Bulgarian)

Currently translated at 98.9% (187 of 189 strings)

Translated using Weblate (Bulgarian)

Currently translated at 59.8% (503 of 840 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (228 of 228 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 99.6% (282 of 283 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 95.1% (2867 of 3013 strings)

Translated using Weblate (Spanish)

Currently translated at 87.7% (2643 of 3013 strings)

Translated using Weblate (Spanish)

Currently translated at 87.7% (2643 of 3013 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 97.9% (748 of 764 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (228 of 228 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (228 of 228 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (427 of 427 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 95.1% (2867 of 3013 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 98.3% (235 of 239 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (228 of 228 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 95.1% (2867 of 3013 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (228 of 228 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 95.1% (2867 of 3013 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (228 of 228 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 95.1% (2867 of 3013 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (239 of 239 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 97.9% (748 of 764 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (47 of 47 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (189 of 189 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 95.1% (2867 of 3013 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (22 of 22 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (8 of 8 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 95.1% (2867 of 3013 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 48.1% (66 of 137 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (54 of 54 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 97.9% (748 of 764 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (109 of 109 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 97.8% (822 of 840 strings)

Deleted translation using Weblate (Chinese (Simplified) (zh_HK))

Deleted translation using Weblate (Chinese (Simplified) (zh_HK))

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (113 of 113 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (22 of 22 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (239 of 239 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (256 of 256 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (256 of 256 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (256 of 256 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (140 of 140 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (228 of 228 strings)

Translated using Weblate (Spanish)

Currently translated at 94.2% (215 of 228 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (56 of 56 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (94 of 94 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (113 of 113 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (131 of 131 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (8 of 8 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (61 of 61 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 98.5% (279 of 283 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (22 of 22 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 91.3% (390 of 427 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 95.1% (2867 of 3013 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (239 of 239 strings)

Translated using Weblate (Italian)

Currently translated at 94.5% (226 of 239 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 37.9% (52 of 137 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 38.6% (53 of 137 strings)

Translated using Weblate (Italian)

Currently translated at 1.4% (2 of 137 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (15 of 15 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 97.9% (748 of 764 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 56.0% (51 of 91 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (376 of 376 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (189 of 189 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (158 of 158 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (256 of 256 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (256 of 256 strings)

Translated using Weblate (Japanese)

Currently translated at 98.5% (2970 of 3013 strings)

Translated using Weblate (Japanese)

Currently translated at 100.0% (228 of 228 strings)

Translated using Weblate (Japanese)

Currently translated at 100.0% (283 of 283 strings)

Translated using Weblate (Japanese)

Currently translated at 99.2% (424 of 427 strings)

Translated using Weblate (Japanese)

Currently translated at 100.0% (109 of 109 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (228 of 228 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 95.1% (2867 of 3013 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (228 of 228 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (283 of 283 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 95.1% (2867 of 3013 strings)

Translated using Weblate (Ukrainian)

Currently translated at 63.0% (1900 of 3013 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (109 of 109 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 97.7% (821 of 840 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (228 of 228 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (228 of 228 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (283 of 283 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (427 of 427 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 94.4% (2847 of 3013 strings)

Translated using Weblate (Ukrainian)

Currently translated at 62.9% (1897 of 3013 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (239 of 239 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (376 of 376 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (189 of 189 strings)

Translated using Weblate (Ukrainian)

Currently translated at 99.0% (108 of 109 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (840 of 840 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 97.8% (223 of 228 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 94.4% (2845 of 3013 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 37.9% (52 of 137 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (140 of 140 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 97.8% (223 of 228 strings)

Translated using Weblate (Spanish (Latin America))

Currently translated at 91.9% (148 of 161 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 94.4% (2845 of 3013 strings)

Translated using Weblate (Korean)

Currently translated at 2.1% (3 of 137 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (13 of 13 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (2 of 2 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (1 of 1 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 97.9% (748 of 764 strings)

Translated using Weblate (Spanish)

Currently translated at 60.4% (55 of 91 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (94 of 94 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 97.9% (748 of 764 strings)

Translated using Weblate (Italian)

Currently translated at 98.6% (225 of 228 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (94 of 94 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 94.2% (2841 of 3013 strings)

Translated using Weblate (Russian)

Currently translated at 18.9% (26 of 137 strings)

Translated using Weblate (Italian)

Currently translated at 93.9% (789 of 840 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (161 of 161 strings)

Translated using Weblate (Russian)

Currently translated at 75.7% (194 of 256 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 94.2% (2841 of 3013 strings)

Translated using Weblate (Spanish (Latin America))

Currently translated at 91.3% (147 of 161 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 94.2% (2841 of 3013 strings)

Translated using Weblate (Spanish)

Currently translated at 59.3% (54 of 91 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (47 of 47 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (840 of 840 strings)

Translated using Weblate (Italian)

Currently translated at 98.1% (158 of 161 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (161 of 161 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (140 of 140 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (56 of 56 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (113 of 113 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (131 of 131 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (8 of 8 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 94.2% (2841 of 3013 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (239 of 239 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (182 of 182 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 97.9% (748 of 764 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (840 of 840 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (256 of 256 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (140 of 140 strings)

Translated using Weblate (Spanish)

Currently translated at 92.1% (210 of 228 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (56 of 56 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (13 of 13 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (61 of 61 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (61 of 61 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 98.5% (279 of 283 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (427 of 427 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 94.0% (2835 of 3013 strings)

Translated using Weblate (Ukrainian)

Currently translated at 62.8% (1894 of 3013 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (224 of 224 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (182 of 182 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 21.1% (29 of 137 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (764 of 764 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (47 of 47 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (376 of 376 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (109 of 109 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (840 of 840 strings)

Translated using Weblate (Spanish)

Currently translated at 78.1% (200 of 256 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 97.1% (816 of 840 strings)

Co-authored-by: Alberto Pesquera <dashmilel@gmail.com>
Co-authored-by: Alcatraz Huo <alrcatraz@gmail.com>
Co-authored-by: Alessandro Losi <pipipe550@hotmail.com>
Co-authored-by: Delta S <deseji93@gmail.com>
Co-authored-by: Dimitar Kraev <dimkraeff@gmail.com>
Co-authored-by: Finrod <963505255@qq.com>
Co-authored-by: Gean Ribeiro <geanribeirok@gmail.com>
Co-authored-by: Ike Osenberg <ike.osenberg@gmail.com>
Co-authored-by: Jaime Martí <jaumemarti77@icloud.com>
Co-authored-by: Jerry Chen <minecjraft@qq.com>
Co-authored-by: Kedr <sergeysamori.ua@gmail.com>
Co-authored-by: Nikita Maximov <ruvemaximus@gmail.com>
Co-authored-by: Omar Bertolla <scaram@icloud.com>
Co-authored-by: Phillip Thelen <phillip@habitica.com>
Co-authored-by: Roberto Tramontano <roberto.tramontano1@gmail.com>
Co-authored-by: TOMA Mitsuru <toma0001@gmail.com>
Co-authored-by: Vinicius Rodrigues <suburbanizar@gmail.com>
Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: nelly <nellychopyuk@gmail.com>
Co-authored-by: tony <duzhe163908@gmail.com>
Co-authored-by: 이수진 <govl09876@naver.com>
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/es/
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/es_419/
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/it/
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/bg/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/es/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/it/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/uk/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/es/
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/uk/
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/character/bg/
Translate-URL: https://translate.habitica.com/projects/habitica/character/uk/
Translate-URL: https://translate.habitica.com/projects/habitica/character/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/es/
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/content/es/
Translate-URL: https://translate.habitica.com/projects/habitica/content/uk/
Translate-URL: https://translate.habitica.com/projects/habitica/content/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/contrib/es/
Translate-URL: https://translate.habitica.com/projects/habitica/contrib/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/death/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/defaulttasks/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/bg/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/it/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/ko/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/ru/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/front/es/
Translate-URL: https://translate.habitica.com/projects/habitica/front/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/es/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/uk/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/generic/es/
Translate-URL: https://translate.habitica.com/projects/habitica/generic/it/
Translate-URL: https://translate.habitica.com/projects/habitica/generic/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/generic/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/groups/es/
Translate-URL: https://translate.habitica.com/projects/habitica/groups/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/groups/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/groups/uk/
Translate-URL: https://translate.habitica.com/projects/habitica/groups/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/inventory/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/limited/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/limited/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/limited/uk/
Translate-URL: https://translate.habitica.com/projects/habitica/limited/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/loginincentives/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/merch/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/messages/es/
Translate-URL: https://translate.habitica.com/projects/habitica/messages/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/noscript/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/npc/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/overview/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/pets/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/quests/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/es/
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/rebirth/es/
Translate-URL: https://translate.habitica.com/projects/habitica/rebirth/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/settings/es/
Translate-URL: https://translate.habitica.com/projects/habitica/settings/ru/
Translate-URL: https://translate.habitica.com/projects/habitica/settings/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/spells/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/es/
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/it/
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/uk/
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/tasks/es/
Translate-URL: https://translate.habitica.com/projects/habitica/tasks/zh_Hans/
Translation: Habitica/Achievements
Translation: Habitica/Backgrounds
Translation: Habitica/Challenge
Translation: Habitica/Character
Translation: Habitica/Communityguidelines
Translation: Habitica/Content
Translation: Habitica/Contrib
Translation: Habitica/Death
Translation: Habitica/Defaulttasks
Translation: Habitica/Faq
Translation: Habitica/Front
Translation: Habitica/Gear
Translation: Habitica/Generic
Translation: Habitica/Groups
Translation: Habitica/Inventory
Translation: Habitica/Limited
Translation: Habitica/Loginincentives
Translation: Habitica/Merch
Translation: Habitica/Messages
Translation: Habitica/Noscript
Translation: Habitica/Npc
Translation: Habitica/Overview
Translation: Habitica/Pets
Translation: Habitica/Quests
Translation: Habitica/Questscontent
Translation: Habitica/Rebirth
Translation: Habitica/Settings
Translation: Habitica/Spells
Translation: Habitica/Subscriber
Translation: Habitica/Tasks

* fix(content): fix February background release date

* 5.17.1

* chore(repo): remove duplicate file

* chore(migrations): move various files to archive
and remove erroneous comment bars

* Translated using Weblate (Portuguese)

Currently translated at 96.4% (109 of 113 strings)

Translated using Weblate (Portuguese)

Currently translated at 97.1% (816 of 840 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 98.9% (2982 of 3013 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 98.9% (2982 of 3013 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 98.0% (749 of 764 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 98.8% (2978 of 3013 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 98.2% (2961 of 3013 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 98.0% (749 of 764 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 97.9% (2951 of 3013 strings)

Translated using Weblate (Japanese)

Currently translated at 100.0% (56 of 56 strings)

Translated using Weblate (Korean)

Currently translated at 58.0% (1748 of 3013 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (56 of 56 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 97.9% (2951 of 3013 strings)

Translated using Weblate (Spanish)

Currently translated at 92.1% (2777 of 3013 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 73.7% (101 of 137 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (47 of 47 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (283 of 283 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 97.9% (2951 of 3013 strings)

Translated using Weblate (French)

Currently translated at 98.8% (2978 of 3013 strings)

Translated using Weblate (Spanish)

Currently translated at 90.9% (2741 of 3013 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (376 of 376 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (283 of 283 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 95.2% (2871 of 3013 strings)

Translated using Weblate (French)

Currently translated at 98.5% (2969 of 3013 strings)

Translated using Weblate (French)

Currently translated at 100.0% (183 of 183 strings)

Translated using Weblate (Spanish)

Currently translated at 32.8% (45 of 137 strings)

Translated using Weblate (French)

Currently translated at 100.0% (109 of 109 strings)

Translated using Weblate (French)

Currently translated at 100.0% (840 of 840 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 95.1% (2867 of 3013 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (283 of 283 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 95.1% (2867 of 3013 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (283 of 283 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 95.1% (2867 of 3013 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 99.2% (2989 of 3013 strings)

Translated using Weblate (Spanish)

Currently translated at 90.5% (2729 of 3013 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (283 of 283 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 95.1% (2867 of 3013 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 95.1% (2867 of 3013 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (283 of 283 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 95.1% (2867 of 3013 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 95.1% (2867 of 3013 strings)

Translated using Weblate (Spanish)

Currently translated at 90.5% (2729 of 3013 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 99.0% (2983 of 3013 strings)

Translated using Weblate (Spanish)

Currently translated at 89.7% (2703 of 3013 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (283 of 283 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 95.1% (2867 of 3013 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (283 of 283 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 95.1% (2867 of 3013 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (283 of 283 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 95.1% (2867 of 3013 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (283 of 283 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 95.1% (2867 of 3013 strings)

Translated using Weblate (Spanish)

Currently translated at 89.4% (2695 of 3013 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (283 of 283 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 95.1% (2867 of 3013 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 98.2% (2959 of 3013 strings)

Translated using Weblate (Spanish)

Currently translated at 89.1% (2685 of 3013 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (113 of 113 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (283 of 283 strings)

Translated using Weblate (Spanish)

Currently translated at 93.9% (266 of 283 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 95.1% (2867 of 3013 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (183 of 183 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 98.0% (749 of 764 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (258 of 258 strings)

Translated using Weblate (Spanish (Latin America))

Currently translated at 91.9% (148 of 161 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (283 of 283 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 95.1% (2867 of 3013 strings)

Translated using Weblate (Spanish)

Currently translated at 99.4% (182 of 183 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (376 of 376 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (258 of 258 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (258 of 258 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (228 of 228 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (94 of 94 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (131 of 131 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (283 of 283 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (427 of 427 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 95.1% (2867 of 3013 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 97.3% (2932 of 3013 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (239 of 239 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (183 of 183 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 98.0% (749 of 764 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (91 of 91 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (376 of 376 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (189 of 189 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (109 of 109 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (840 of 840 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 98.0% (749 of 764 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (140 of 140 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (94 of 94 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (61 of 61 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (183 of 183 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (183 of 183 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 97.9% (748 of 764 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 88.0% (96 of 109 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (840 of 840 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (258 of 258 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 73.2% (189 of 258 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 99.6% (837 of 840 strings)

Co-authored-by: Delta S <deseji93@gmail.com>
Co-authored-by: Finrod <963505255@qq.com>
Co-authored-by: Gean Ribeiro <geanribeirok@gmail.com>
Co-authored-by: Icaro <icaro.mascarenhas@outlook.com>
Co-authored-by: Jaime Martí <jaumemarti77@icloud.com>
Co-authored-by: Natalie Luhrs <eilatan@gmail.com>
Co-authored-by: Quim Martínez Lara <quimml60@gmail.com>
Co-authored-by: Sophie LE MASLE <sophiesuff@gmail.com>
Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: 김경은 <kekim.lang@gmail.com>
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/es_419/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/fr/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/pt/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/fr/
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/character/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/es/
Translate-URL: https://translate.habitica.com/projects/habitica/content/es/
Translate-URL: https://translate.habitica.com/projects/habitica/content/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/contrib/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/es/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/front/es/
Translate-URL: https://translate.habitica.com/projects/habitica/front/fr/
Translate-URL: https://translate.habitica.com/projects/habitica/front/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/front/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/es/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/fr/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/ko/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/generic/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/groups/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/limited/es/
Translate-URL: https://translate.habitica.com/projects/habitica/limited/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/messages/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/npc/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/pets/pt/
Translate-URL: https://translate.habitica.com/projects/habitica/pets/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/quests/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/settings/es/
Translate-URL: https://translate.habitica.com/projects/habitica/settings/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/settings/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/spells/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/spells/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/tasks/zh_Hans/
Translation: Habitica/Achievements
Translation: Habitica/Backgrounds
Translation: Habitica/Challenge
Translation: Habitica/Character
Translation: Habitica/Communityguidelines
Translation: Habitica/Content
Translation: Habitica/Contrib
Translation: Habitica/Faq
Translation: Habitica/Front
Translation: Habitica/Gear
Translation: Habitica/Generic
Translation: Habitica/Groups
Translation: Habitica/Limited
Translation: Habitica/Messages
Translation: Habitica/Npc
Translation: Habitica/Pets
Translation: Habitica/Quests
Translation: Habitica/Questscontent
Translation: Habitica/Settings
Translation: Habitica/Spells
Translation: Habitica/Subscriber
Translation: Habitica/Tasks

---------

Co-authored-by: Leonardo Chappuis <40621126+leonardochappuis@users.noreply.github.com>
Co-authored-by: Sabe Jones <sabe@habitica.com>
Co-authored-by: Natalie <78037386+CuriousMagpie@users.noreply.github.com>
Co-authored-by: Sabe Jones <sabrecat@gmail.com>
Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: Alberto Pesquera <dashmilel@gmail.com>
Co-authored-by: Alcatraz Huo <alrcatraz@gmail.com>
Co-authored-by: Alessandro Losi <pipipe550@hotmail.com>
Co-authored-by: Delta S <deseji93@gmail.com>
Co-authored-by: Dimitar Kraev <dimkraeff@gmail.com>
Co-authored-by: Finrod <963505255@qq.com>
Co-authored-by: Gean Ribeiro <geanribeirok@gmail.com>
Co-authored-by: Ike Osenberg <ike.osenberg@gmail.com>
Co-authored-by: Jaime Martí <jaumemarti77@icloud.com>
Co-authored-by: Jerry Chen <minecjraft@qq.com>
Co-authored-by: Kedr <sergeysamori.ua@gmail.com>
Co-authored-by: Nikita Maximov <ruvemaximus@gmail.com>
Co-authored-by: Omar Bertolla <scaram@icloud.com>
Co-authored-by: Roberto Tramontano <roberto.tramontano1@gmail.com>
Co-authored-by: TOMA Mitsuru <toma0001@gmail.com>
Co-authored-by: Vinicius Rodrigues <suburbanizar@gmail.com>
Co-authored-by: nelly <nellychopyuk@gmail.com>
Co-authored-by: tony <duzhe163908@gmail.com>
Co-authored-by: 이수진 <govl09876@naver.com>
Co-authored-by: CuriousMagpie <eilatan@gmail.com>
Co-authored-by: Icaro <icaro.mascarenhas@outlook.com>
Co-authored-by: Quim Martínez Lara <quimml60@gmail.com>
Co-authored-by: Sophie LE MASLE <sophiesuff@gmail.com>
Co-authored-by: 김경은 <kekim.lang@gmail.com>
2024-02-08 14:45:07 -06:00
Sabe Jones
88611aeb80 Merge branch 'sabrecat/gmail-oneclick' into release 2024-02-08 14:33:36 -06:00
Sabe Jones
29f555ac5c Merge branch 'develop' into release 2024-02-08 14:31:06 -06:00
Weblate
49082714d7 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (22 of 22 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (3023 of 3023 strings)

Translated using Weblate (Russian)

Currently translated at 96.3% (2912 of 3023 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (183 of 183 strings)

Translated using Weblate (Russian)

Currently translated at 19.7% (27 of 137 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (377 of 377 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (377 of 377 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (109 of 109 strings)

Translated using Weblate (Russian)

Currently translated at 77.1% (199 of 258 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (140 of 140 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (427 of 427 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (3023 of 3023 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (239 of 239 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (183 of 183 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (109 of 109 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 99.1% (2997 of 3023 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 91.4% (236 of 258 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 99.1% (2997 of 3023 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 99.0% (2993 of 3023 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 99.0% (2993 of 3023 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 98.9% (2991 of 3023 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (229 of 229 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (282 of 282 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 98.7% (2986 of 3023 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (377 of 377 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (847 of 847 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (258 of 258 strings)

Translated using Weblate (Spanish)

Currently translated at 92.8% (2797 of 3013 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (258 of 258 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 82.9% (214 of 258 strings)

Translated using Weblate (Spanish)

Currently translated at 92.8% (2797 of 3013 strings)

Translated using Weblate (Spanish)

Currently translated at 92.8% (2797 of 3013 strings)

Translated using Weblate (Spanish)

Currently translated at 92.6% (2792 of 3013 strings)

Translated using Weblate (Spanish)

Currently translated at 92.3% (2784 of 3013 strings)

Co-authored-by: Alcatraz Huo <alrcatraz@gmail.com>
Co-authored-by: Finrod <963505255@qq.com>
Co-authored-by: Gean Ribeiro <geanribeirok@gmail.com>
Co-authored-by: Ike Osenberg <ike.osenberg@gmail.com>
Co-authored-by: Jaime Martí <jaumemarti77@icloud.com>
Co-authored-by: Valeria <dbrvvk@gmail.com>
Co-authored-by: Weblate <noreply@weblate.org>
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/content/ru/
Translate-URL: https://translate.habitica.com/projects/habitica/content/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/ru/
Translate-URL: https://translate.habitica.com/projects/habitica/front/ru/
Translate-URL: https://translate.habitica.com/projects/habitica/front/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/es/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/ru/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/generic/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/groups/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/limited/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/loginincentives/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/settings/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/settings/ru/
Translate-URL: https://translate.habitica.com/projects/habitica/settings/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/tasks/zh_Hans/
Translation: Habitica/Backgrounds
Translation: Habitica/Challenge
Translation: Habitica/Content
Translation: Habitica/Faq
Translation: Habitica/Front
Translation: Habitica/Gear
Translation: Habitica/Generic
Translation: Habitica/Groups
Translation: Habitica/Limited
Translation: Habitica/Loginincentives
Translation: Habitica/Settings
Translation: Habitica/Subscriber
Translation: Habitica/Tasks
2024-02-08 21:27:44 +01:00
CuriousMagpie
5be019864f chore(git): update .gitignore 2024-02-07 17:31:58 -05:00
Sabe Jones
91795875b5 feat(email): allow unsub via POST request 2024-02-07 16:09:23 -06:00
Phillip Thelen
67a6e6f8ac Add Content Release notification type (#15101) 2024-02-06 14:06:44 -06:00
Sabe Jones
e95f1cf003 5.17.2 2024-02-06 13:58:08 -06:00
Sabe Jones
90bd743816 Merge branch 'develop' into release 2024-02-06 13:58:01 -06:00
Weblate
76e5e8c069 Translated using Weblate (Portuguese)
Currently translated at 96.4% (109 of 113 strings)

Translated using Weblate (Portuguese)

Currently translated at 97.1% (816 of 840 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 98.9% (2982 of 3013 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 98.9% (2982 of 3013 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 98.0% (749 of 764 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 98.8% (2978 of 3013 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 98.2% (2961 of 3013 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 98.0% (749 of 764 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 97.9% (2951 of 3013 strings)

Translated using Weblate (Japanese)

Currently translated at 100.0% (56 of 56 strings)

Translated using Weblate (Korean)

Currently translated at 58.0% (1748 of 3013 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (56 of 56 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 97.9% (2951 of 3013 strings)

Translated using Weblate (Spanish)

Currently translated at 92.1% (2777 of 3013 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 73.7% (101 of 137 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (47 of 47 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (283 of 283 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 97.9% (2951 of 3013 strings)

Translated using Weblate (French)

Currently translated at 98.8% (2978 of 3013 strings)

Translated using Weblate (Spanish)

Currently translated at 90.9% (2741 of 3013 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (376 of 376 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (283 of 283 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 95.2% (2871 of 3013 strings)

Translated using Weblate (French)

Currently translated at 98.5% (2969 of 3013 strings)

Translated using Weblate (French)

Currently translated at 100.0% (183 of 183 strings)

Translated using Weblate (Spanish)

Currently translated at 32.8% (45 of 137 strings)

Translated using Weblate (French)

Currently translated at 100.0% (109 of 109 strings)

Translated using Weblate (French)

Currently translated at 100.0% (840 of 840 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 95.1% (2867 of 3013 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (283 of 283 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 95.1% (2867 of 3013 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (283 of 283 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 95.1% (2867 of 3013 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 99.2% (2989 of 3013 strings)

Translated using Weblate (Spanish)

Currently translated at 90.5% (2729 of 3013 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (283 of 283 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 95.1% (2867 of 3013 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 95.1% (2867 of 3013 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (283 of 283 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 95.1% (2867 of 3013 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 95.1% (2867 of 3013 strings)

Translated using Weblate (Spanish)

Currently translated at 90.5% (2729 of 3013 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 99.0% (2983 of 3013 strings)

Translated using Weblate (Spanish)

Currently translated at 89.7% (2703 of 3013 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (283 of 283 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 95.1% (2867 of 3013 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (283 of 283 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 95.1% (2867 of 3013 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (283 of 283 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 95.1% (2867 of 3013 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (283 of 283 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 95.1% (2867 of 3013 strings)

Translated using Weblate (Spanish)

Currently translated at 89.4% (2695 of 3013 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (283 of 283 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 95.1% (2867 of 3013 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 98.2% (2959 of 3013 strings)

Translated using Weblate (Spanish)

Currently translated at 89.1% (2685 of 3013 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (113 of 113 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (283 of 283 strings)

Translated using Weblate (Spanish)

Currently translated at 93.9% (266 of 283 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 95.1% (2867 of 3013 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (183 of 183 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 98.0% (749 of 764 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (258 of 258 strings)

Translated using Weblate (Spanish (Latin America))

Currently translated at 91.9% (148 of 161 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (283 of 283 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 95.1% (2867 of 3013 strings)

Translated using Weblate (Spanish)

Currently translated at 99.4% (182 of 183 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (376 of 376 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (258 of 258 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (258 of 258 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (228 of 228 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (94 of 94 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (131 of 131 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (283 of 283 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (427 of 427 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 95.1% (2867 of 3013 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 97.3% (2932 of 3013 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (239 of 239 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (183 of 183 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 98.0% (749 of 764 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (91 of 91 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (376 of 376 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (189 of 189 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (109 of 109 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (840 of 840 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 98.0% (749 of 764 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (140 of 140 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (94 of 94 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (61 of 61 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (183 of 183 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (183 of 183 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 97.9% (748 of 764 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 88.0% (96 of 109 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (840 of 840 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (258 of 258 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 73.2% (189 of 258 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 99.6% (837 of 840 strings)

Co-authored-by: Delta S <deseji93@gmail.com>
Co-authored-by: Finrod <963505255@qq.com>
Co-authored-by: Gean Ribeiro <geanribeirok@gmail.com>
Co-authored-by: Icaro <icaro.mascarenhas@outlook.com>
Co-authored-by: Jaime Martí <jaumemarti77@icloud.com>
Co-authored-by: Natalie Luhrs <eilatan@gmail.com>
Co-authored-by: Quim Martínez Lara <quimml60@gmail.com>
Co-authored-by: Sophie LE MASLE <sophiesuff@gmail.com>
Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: 김경은 <kekim.lang@gmail.com>
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/es_419/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/fr/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/pt/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/fr/
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/character/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/es/
Translate-URL: https://translate.habitica.com/projects/habitica/content/es/
Translate-URL: https://translate.habitica.com/projects/habitica/content/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/contrib/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/es/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/front/es/
Translate-URL: https://translate.habitica.com/projects/habitica/front/fr/
Translate-URL: https://translate.habitica.com/projects/habitica/front/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/front/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/es/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/fr/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/ko/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/generic/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/groups/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/limited/es/
Translate-URL: https://translate.habitica.com/projects/habitica/limited/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/messages/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/npc/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/pets/pt/
Translate-URL: https://translate.habitica.com/projects/habitica/pets/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/quests/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/settings/es/
Translate-URL: https://translate.habitica.com/projects/habitica/settings/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/settings/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/spells/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/spells/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/tasks/zh_Hans/
Translation: Habitica/Achievements
Translation: Habitica/Backgrounds
Translation: Habitica/Challenge
Translation: Habitica/Character
Translation: Habitica/Communityguidelines
Translation: Habitica/Content
Translation: Habitica/Contrib
Translation: Habitica/Faq
Translation: Habitica/Front
Translation: Habitica/Gear
Translation: Habitica/Generic
Translation: Habitica/Groups
Translation: Habitica/Limited
Translation: Habitica/Messages
Translation: Habitica/Npc
Translation: Habitica/Pets
Translation: Habitica/Quests
Translation: Habitica/Questscontent
Translation: Habitica/Settings
Translation: Habitica/Spells
Translation: Habitica/Subscriber
Translation: Habitica/Tasks
2024-02-06 20:57:18 +01:00
Sabe Jones
12c75b7488 Merge branch 'develop' into release 2024-02-06 11:50:47 -06:00
Sabe Jones
eed7c9aabc fix(test): no longer expect keepAlive 2024-02-05 17:27:37 -06:00
Sabe Jones
f74160c16a chore(deprecations): clean out some warnings 2024-02-05 16:50:06 -06:00
Sabe Jones
2ba74f1645 chore(migrations): move various files to archive
and remove erroneous comment bars
2024-02-05 15:34:53 -06:00
Sabe Jones
200af2cf16 chore(migrations): move various files to archive
and remove erroneous comment bars
2024-02-05 15:34:43 -06:00
negue
8b373b9283 allow liking their own message (#15117) 2024-02-05 14:55:46 -06:00
SabreCat
2fa26db93f chore(repo): remove duplicate file 2024-02-02 14:50:02 -06:00
518 changed files with 32119 additions and 34297 deletions

View File

@@ -5,6 +5,7 @@ module.exports = {
'habitrpg/lib/node',
],
rules: {
'prefer-regex-literals': 'warn',
'import/no-extraneous-dependencies': 'off',
},
};

View File

@@ -10,19 +10,20 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [14.x]
node-version: [21.x]
steps:
- uses: actions/checkout@v1
- uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
- run: sudo apt-get -y install libkrb5-dev
- run: cp config.json.example config.json
- name: npm install
run: |
npm ci
npm i
env:
CI: true
NODE_ENV: test
@@ -31,19 +32,20 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [14.x]
node-version: [21.x]
steps:
- uses: actions/checkout@v1
- uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
- run: sudo apt-get -y install libkrb5-dev
- run: cp config.json.example config.json
- name: npm install
run: |
npm ci
npm i
env:
CI: true
NODE_ENV: test
@@ -52,19 +54,20 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [14.x]
node-version: [21.x]
steps:
- uses: actions/checkout@v1
- uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
- run: sudo apt-get -y install libkrb5-dev
- run: cp config.json.example config.json
- name: npm install
run: |
npm ci
npm i
env:
CI: true
NODE_ENV: test
@@ -74,19 +77,20 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [14.x]
node-version: [21.x]
steps:
- uses: actions/checkout@v1
- uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
- run: sudo apt-get -y install libkrb5-dev
- run: cp config.json.example config.json
- name: npm install
run: |
npm ci
npm i
env:
CI: true
NODE_ENV: test
@@ -95,19 +99,20 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [14.x]
node-version: [21.x]
steps:
- uses: actions/checkout@v1
- uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
- run: sudo apt-get -y install libkrb5-dev
- run: cp config.json.example config.json
- name: npm install
run: |
npm ci
npm i
env:
CI: true
NODE_ENV: test
@@ -117,14 +122,14 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [14.x]
node-version: [21.x]
mongodb-version: [4.2]
steps:
- uses: actions/checkout@v1
- uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
- name: Start MongoDB ${{ matrix.mongodb-version }} Replica Set
@@ -132,10 +137,11 @@ jobs:
with:
mongodb-version: ${{ matrix.mongodb-version }}
mongodb-replica-set: rs
- run: sudo apt-get -y install libkrb5-dev
- run: cp config.json.example config.json
- name: npm install
run: |
npm ci
npm i
env:
CI: true
NODE_ENV: test
@@ -146,14 +152,14 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [14.x]
node-version: [21.x]
mongodb-version: [4.2]
steps:
- uses: actions/checkout@v1
- uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
- name: Start MongoDB ${{ matrix.mongodb-version }} Replica Set
@@ -161,10 +167,11 @@ jobs:
with:
mongodb-version: ${{ matrix.mongodb-version }}
mongodb-replica-set: rs
- run: sudo apt-get -y install libkrb5-dev
- run: cp config.json.example config.json
- name: npm install
run: |
npm ci
npm i
env:
CI: true
NODE_ENV: test
@@ -175,14 +182,14 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [14.x]
node-version: [21.x]
mongodb-version: [4.2]
steps:
- uses: actions/checkout@v1
- uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
- name: Start MongoDB ${{ matrix.mongodb-version }} Replica Set
@@ -190,10 +197,11 @@ jobs:
with:
mongodb-version: ${{ matrix.mongodb-version }}
mongodb-replica-set: rs
- run: sudo apt-get -y install libkrb5-dev
- run: cp config.json.example config.json
- name: npm install
run: |
npm ci
npm i
env:
CI: true
NODE_ENV: test
@@ -205,19 +213,20 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [14.x]
node-version: [21.x]
steps:
- uses: actions/checkout@v1
- uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
- run: sudo apt-get -y install libkrb5-dev
- run: cp config.json.example config.json
- name: npm install
run: |
npm ci
npm i
env:
CI: true
NODE_ENV: test
@@ -228,15 +237,16 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [14.x]
node-version: [21.x]
steps:
- uses: actions/checkout@v1
- uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
- run: sudo apt-get -y install libkrb5-dev
- run: cp config.json.example config.json
- name: npm install
run: |

1
.gitignore vendored
View File

@@ -40,6 +40,7 @@ yarn.lock
!.elasticbeanstalk/*.global.yml
/.vscode
habitica.code-workspace
# webstorm fake webpack for path intellisense
webpack.webstorm.config

2
.nvmrc
View File

@@ -1 +1 @@
14
20

View File

@@ -1,30 +0,0 @@
FROM node:14
ENV ADMIN_EMAIL admin@habitica.com
ENV EMAILS_COMMUNITY_MANAGER_EMAIL admin@habitica.com
ENV AMAZON_PAYMENTS_CLIENT_ID amzn1.application-oa2-client.68ed9e6904ef438fbc1bf86bf494056e
ENV AMAZON_PAYMENTS_SELLER_ID AMQ3SB4SG5E91
ENV AMPLITUDE_KEY e8d4c24b3d6ef3ee73eeba715023dd43
ENV BASE_URL https://habitica.com
ENV FACEBOOK_KEY 128307497299777
ENV GA_ID UA-33510635-1
ENV GOOGLE_CLIENT_ID 1035232791481-32vtplgnjnd1aufv3mcu1lthf31795fq.apps.googleusercontent.com
ENV LOGGLY_CLIENT_TOKEN ab5663bf-241f-4d14-8783-7d80db77089a
ENV NODE_ENV production
ENV STRIPE_PUB_KEY pk_85fQ0yMECHNfHTSsZoxZXlPSwSNfA
ENV APPLE_AUTH_CLIENT_ID 9Q9SMRMCNN.com.habitrpg.ios.Habitica
# Install global packages
RUN npm install -g gulp-cli mocha
# Clone Habitica repo and install dependencies
RUN mkdir -p /usr/src/habitrpg
WORKDIR /usr/src/habitrpg
RUN git clone --branch release --depth 1 https://github.com/HabitRPG/habitica.git /usr/src/habitrpg
RUN git config --global url."https://".insteadOf git://
RUN npm set unsafe-perm true
RUN npm install
# Start Habitica
EXPOSE 80 8080 36612
CMD ["node", "./website/transpiled-babel/index.js"]

View File

@@ -1,4 +1,4 @@
FROM node:14
FROM node:20
# Install global packages
RUN npm install -g gulp-cli mocha

View File

@@ -87,5 +87,5 @@
"REDIS_HOST": "aaabbbcccdddeeefff",
"REDIS_PORT": "1234",
"REDIS_PASSWORD": "12345678",
"TRUSTED_DOMAINS": "localhost,habitica.com"
"TRUSTED_DOMAINS": "localhost,https://habitica.com"
}

View File

@@ -61,7 +61,7 @@ async function updateUser (user) {
export default async function processUsers () {
let query = {
// migration: {$ne: MIGRATION_NAME},
migration: {$ne: MIGRATION_NAME},
'auth.timestamps.loggedin': {$gt: new Date('2021-01-01')},
};

View File

@@ -105,7 +105,7 @@ async function updateUser (user) {
export default async function processUsers () {
let query = {
// migration: { $ne: MIGRATION_NAME },
migration: { $ne: MIGRATION_NAME },
'auth.timestamps.loggedin': { $gt: new Date('2021-08-01') },
};

View File

@@ -145,7 +145,7 @@ async function updateUser (user) {
export default async function processUsers () {
let query = {
// migration: { $ne: MIGRATION_NAME },
migration: { $ne: MIGRATION_NAME },
'auth.timestamps.loggedin': { $gt: new Date('2021-08-01') },
};

View File

@@ -105,7 +105,7 @@ async function updateUser (user) {
export default async function processUsers () {
let query = {
// migration: { $ne: MIGRATION_NAME },
migration: { $ne: MIGRATION_NAME },
'auth.timestamps.loggedin': { $gt: new Date('2021-08-01') },
};

View File

@@ -95,7 +95,7 @@ async function updateUser (user) {
export default async function processUsers () {
let query = {
// migration: { $ne: MIGRATION_NAME },
migration: { $ne: MIGRATION_NAME },
'auth.timestamps.loggedin': { $gt: new Date('2022-01-01') },
};

View File

@@ -86,7 +86,7 @@ async function updateUser (user) {
export default async function processUsers () {
let query = {
// migration: { $ne: MIGRATION_NAME },
migration: { $ne: MIGRATION_NAME },
'auth.timestamps.loggedin': { $gt: new Date('2022-01-01') },
};

View File

@@ -63,7 +63,7 @@ async function updateUser (user) {
&& pets['Wolf-Shade']
&& pets['Wolf-Skeleton']
&& pets['Wolf-White']
&& pets['Wolf-Zombie'] {
&& pets['Wolf-Zombie']) {
set['achievements.polarPro'] = true;
}
}
@@ -75,7 +75,7 @@ async function updateUser (user) {
export default async function processUsers () {
let query = {
// migration: { $ne: MIGRATION_NAME },
migration: { $ne: MIGRATION_NAME },
'auth.timestamps.loggedin': { $gt: new Date('2022-11-01') },
};

View File

@@ -125,7 +125,7 @@ async function updateUser (user) {
export default async function processUsers () {
let query = {
// migration: { $ne: MIGRATION_NAME },
migration: { $ne: MIGRATION_NAME },
'auth.timestamps.loggedin': { $gt: new Date('2023-04-15') },
};

View File

@@ -110,7 +110,7 @@ async function updateUser (user) {
export default async function processUsers () {
let query = {
migration: {$ne: MIGRATION_NAME},
// 'auth.timestamps.loggedin': { $gt: new Date('2023-07-08') },
'auth.timestamps.loggedin': { $gt: new Date('2023-07-08') },
};
const fields = {

View File

@@ -0,0 +1,89 @@
/* eslint-disable no-console */
const MIGRATION_NAME = '202403_pet_group_achievements';
import { model as User } from '../../../website/server/models/user';
const progressCount = 1000;
let count = 0;
async function updateUser (user) {
count++;
let set = {
migration: MIGRATION_NAME,
};
if (user && user.items && user.items.pets) {
const pets = user.items.pets;
if (pets['GuineaPig-Zombie'] > 0
&& pets['GuineaPig-Skeleton'] > 0
&& pets['GuineaPig-Base'] > 0
&& pets['GuineaPig-Desert'] > 0
&& pets['GuineaPig-Red'] > 0
&& pets['GuineaPig-Shade'] > 0
&& pets['GuineaPig-White']> 0
&& pets['GuineaPig-Golden'] > 0
&& pets['GuineaPig-CottonCandyBlue'] > 0
&& pets['GuineaPig-CottonCandyPink'] > 0
&& pets['Squirrel-Zombie'] > 0
&& pets['Squirrel-Skeleton'] > 0
&& pets['Squirrel-Base'] > 0
&& pets['Squirrel-Desert'] > 0
&& pets['Squirrel-Red'] > 0
&& pets['Squirrel-Shade'] > 0
&& pets['Squirrel-White'] > 0
&& pets['Squirrel-Golden'] > 0
&& pets['Squirrel-CottonCandyBlue'] > 0
&& pets['Squirrel-CottonCandyPink'] > 0
&& pets['Rat-Zombie'] > 0
&& pets['Rat-Skeleton'] > 0
&& pets['Rat-Base'] > 0
&& pets['Rat-Desert'] > 0
&& pets['Rat-Red'] > 0
&& pets['Rat-Shade'] > 0
&& pets['Rat-White'] > 0
&& pets['Rat-Golden'] > 0
&& pets['Rat-CottonCandyBlue'] > 0
&& pets['Rat-CottonCandyPink'] > 0 ) {
set['achievements.rodentRuler'] = true;
}
}
if (count % progressCount === 0) console.warn(`${count} ${user._id}`);
return await User.updateOne({ _id: user._id }, { $set: set }).exec();
}
export default async function processUsers () {
let query = {
migration: { $ne: MIGRATION_NAME },
'auth.timestamps.loggedin': { $gt: new Date('2024-02-01') },
};
const fields = {
_id: 1,
items: 1,
};
while (true) { // eslint-disable-line no-constant-condition
const users = await User // eslint-disable-line no-await-in-loop
.find(query)
.limit(250)
.sort({_id: 1})
.select(fields)
.lean()
.exec();
if (users.length === 0) {
console.warn('All appropriate users found and modified.');
console.warn(`\n${count} users processed\n`);
break;
} else {
query._id = {
$gt: users[users.length - 1]._id,
};
}
await Promise.all(users.map(updateUser)); // eslint-disable-line no-await-in-loop
}
};

View File

@@ -1,118 +0,0 @@
let migrationName = '20180904_takeThis.js'; // Update per month
let authorName = 'Sabe'; // in case script author needs to know when their ...
let authorUuid = '7f14ed62-5408-4e1b-be83-ada62d504931'; // ... own data is done
/*
* Award Take This ladder items to participants in this month's challenge
*/
import monk from 'monk';
import nconf from 'nconf';
const CONNECTION_STRING = nconf.get('MIGRATION_CONNECT_STRING'); // FOR TEST DATABASE
let dbUsers = monk(CONNECTION_STRING).get('users', { castIds: false });
function processUsers (lastId) {
// specify a query to limit the affected users (empty for all users):
let query = {
migration: {$ne: migrationName},
challenges: {$in: ['1044ec0c-4a85-48c5-9f36-d51c0c62c7d3']}, // Update per month
};
if (lastId) {
query._id = {
$gt: lastId,
};
}
dbUsers.find(query, {
sort: {_id: 1},
limit: 250,
fields: [
'items.gear.owned',
], // specify fields we are interested in to limit retrieved data (empty if we're not reading data):
})
.then(updateUsers)
.catch((err) => {
console.log(err);
return exiting(1, `ERROR! ${ err}`);
});
}
let progressCount = 1000;
let count = 0;
function updateUsers (users) {
if (!users || users.length === 0) {
console.warn('All appropriate users found and modified.');
displayData();
return;
}
let userPromises = users.map(updateUser);
let lastUser = users[users.length - 1];
return Promise.all(userPromises)
.then(() => {
processUsers(lastUser._id);
});
}
function updateUser (user) {
count++;
let set = {};
let push;
if (typeof user.items.gear.owned.back_special_takeThis !== 'undefined') {
set = {migration: migrationName};
} else if (typeof user.items.gear.owned.body_special_takeThis !== 'undefined') {
set = {migration: migrationName, 'items.gear.owned.back_special_takeThis': false};
push = {pinnedItems: {type: 'marketGear', path: 'gear.flat.back_special_takeThis', _id: monk.id()}};
} else if (typeof user.items.gear.owned.head_special_takeThis !== 'undefined') {
set = {migration: migrationName, 'items.gear.owned.body_special_takeThis': false};
push = {pinnedItems: {type: 'marketGear', path: 'gear.flat.body_special_takeThis', _id: monk.id()}};
} else if (typeof user.items.gear.owned.armor_special_takeThis !== 'undefined') {
set = {migration: migrationName, 'items.gear.owned.head_special_takeThis': false};
push = {pinnedItems: {type: 'marketGear', path: 'gear.flat.head_special_takeThis', _id: monk.id()}};
} else if (typeof user.items.gear.owned.weapon_special_takeThis !== 'undefined') {
set = {migration: migrationName, 'items.gear.owned.armor_special_takeThis': false};
push = {pinnedItems: {type: 'marketGear', path: 'gear.flat.armor_special_takeThis', _id: monk.id()}};
} else if (typeof user.items.gear.owned.shield_special_takeThis !== 'undefined') {
set = {migration: migrationName, 'items.gear.owned.weapon_special_takeThis': false};
push = {pinnedItems: {type: 'marketGear', path: 'gear.flat.weapon_special_takeThis', _id: monk.id()}};
} else {
set = {migration: migrationName, 'items.gear.owned.shield_special_takeThis': false};
push = {pinnedItems: {type: 'marketGear', path: 'gear.flat.shield_special_takeThis', _id: monk.id()}};
}
if (push) {
dbUsers.update({_id: user._id}, {$set: set, $push: push});
} else {
dbUsers.update({_id: user._id}, {$set: set});
}
if (count % progressCount === 0) console.warn(`${count } ${ user._id}`);
if (user._id === authorUuid) console.warn(`${authorName } processed`);
}
function displayData () {
console.warn(`\n${ count } users processed\n`);
return exiting(0);
}
function exiting (code, msg) {
code = code || 0; // 0 = success
if (code && !msg) {
msg = 'ERROR!';
}
if (msg) {
if (code) {
console.error(msg);
} else {
console.log(msg);
}
}
process.exit(code);
}
module.exports = processUsers;

View File

@@ -1,10 +0,0 @@
import csv
with open(r"/home/slappybag/Documents/SurveyScrape.csv") as f:
reader = csv.reader(f, delimiter=',', quotechar='"')
column = []
for row in reader:
if row:
column.append(row[4])
print column

View File

@@ -51,7 +51,7 @@ async function updateUser (user) {
if (count % progressCount === 0) console.warn(`${count} ${user._id}`);
return User.update({ _id: user._id }, { $set: set }).exec();
return User.updateOne({ _id: user._id }, { $set: set }).exec();
}
export default async function processUsers () {

View File

@@ -3,7 +3,7 @@ import { v4 as uuid } from 'uuid';
import { model as User } from '../../website/server/models/user';
const MIGRATION_NAME = '20230314_pi_day';
const MIGRATION_NAME = '20240314_pi_day';
const progressCount = 1000;
let count = 0;

26651
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,7 +1,7 @@
{
"name": "habitica",
"description": "A habit tracker app which treats your goals like a Role Playing Game.",
"version": "5.17.1",
"version": "5.23.0",
"main": "./website/server/index.js",
"dependencies": {
"@babel/core": "^7.22.10",
@@ -78,8 +78,8 @@
},
"private": true,
"engines": {
"node": "^14",
"npm": "^6"
"node": "20",
"npm": "^10"
},
"scripts": {
"lint": "eslint --ext .js --fix . && cd website/client && npm run lint",
@@ -123,6 +123,5 @@
"sinon": "^15.2.0",
"sinon-chai": "^3.7.0",
"sinon-stub-promise": "^4.0.0"
},
"optionalDependencies": {}
}
}

View File

@@ -1,4 +1,4 @@
import apiError from '../../../../website/server/libs/apiError';
import { apiError } from '../../../../website/server/libs/apiError';
describe('API Messages', () => {
const message = 'Only public guilds support pagination.';

View File

@@ -44,7 +44,7 @@ describe('mongodb', () => {
const mongoLibOverride = requireAgain(pathToMongoLib);
const options = mongoLibOverride.getDefaultConnectionOptions();
expect(options).to.have.all.keys(['useNewUrlParser', 'useUnifiedTopology', 'keepAlive', 'keepAliveInitialDelay']);
expect(options).to.have.all.keys(['useNewUrlParser', 'useUnifiedTopology']);
});
});
});

View File

@@ -2,7 +2,7 @@ import { model as User } from '../../../../../../website/server/models/user';
import amzLib from '../../../../../../website/server/libs/payments/amazon';
import payments from '../../../../../../website/server/libs/payments/payments';
import common from '../../../../../../website/common';
import apiError from '../../../../../../website/server/libs/apiError';
import { apiError } from '../../../../../../website/server/libs/apiError';
import * as gems from '../../../../../../website/server/libs/payments/gems';
const { i18n } = common;

View File

@@ -4,7 +4,7 @@ import nconf from 'nconf';
import paypalPayments from '../../../../../../website/server/libs/payments/paypal';
import { model as User } from '../../../../../../website/server/models/user';
import common from '../../../../../../website/common';
import apiError from '../../../../../../website/server/libs/apiError';
import { apiError } from '../../../../../../website/server/libs/apiError';
import * as gems from '../../../../../../website/server/libs/payments/gems';
const BASE_URL = nconf.get('BASE_URL');

View File

@@ -1,4 +1,4 @@
import apiError from '../../../../../../website/server/libs/apiError';
import { apiError } from '../../../../../../website/server/libs/apiError';
import common from '../../../../../../website/common';
import {
getOneTimePaymentInfo,

View File

@@ -6,7 +6,7 @@ import {
} from '../../../helpers/api-unit.helper';
import { ensurePermission } from '../../../../website/server/middlewares/ensureAccessRight';
import { NotAuthorized } from '../../../../website/server/libs/errors';
import apiError from '../../../../website/server/libs/apiError';
import { apiError } from '../../../../website/server/libs/apiError';
describe('ensure access middlewares', () => {
let res; let req; let

View File

@@ -6,7 +6,7 @@ import {
generateNext,
} from '../../../helpers/api-unit.helper';
import { Forbidden } from '../../../../website/server/libs/errors';
import apiError from '../../../../website/server/libs/apiError';
import { apiError } from '../../../../website/server/libs/apiError';
function checkErrorThrown (next) {
expect(next).to.have.been.calledOnce;

View File

@@ -7,7 +7,7 @@ import {
generateNext,
} from '../../../helpers/api-unit.helper';
import { TooManyRequests } from '../../../../website/server/libs/errors';
import apiError from '../../../../website/server/libs/apiError';
import { apiError } from '../../../../website/server/libs/apiError';
import logger from '../../../../website/server/libs/logger';
describe('rateLimiter middleware', () => {

View File

@@ -1,7 +1,7 @@
import { v4 as generateUUID } from 'uuid';
import { model as Webhook } from '../../../../website/server/models/webhook';
import { BadRequest } from '../../../../website/server/libs/errors';
import apiError from '../../../../website/server/libs/apiError';
import { apiError } from '../../../../website/server/libs/apiError';
describe('Webhook Model', () => {
context('Instance Methods', () => {

View File

@@ -7,6 +7,7 @@ import {
describe('POST /challenges/:challengeId/flag', () => {
let user;
let challengeGroup;
let challenge;
beforeEach(async () => {
@@ -20,6 +21,7 @@ describe('POST /challenges/:challengeId/flag', () => {
});
user = groupLeader;
challengeGroup = group;
challenge = await generateChallenge(user, group);
});
@@ -59,4 +61,19 @@ describe('POST /challenges/:challengeId/flag', () => {
message: t('messageChallengeFlagAlreadyReported'),
});
});
it('returns an error when user tries to flag an official challenge', async () => {
await user.updateOne({
permissions: {
challengeAdmin: true,
},
});
challenge = await generateChallenge(user, challengeGroup, { official: true });
await expect(user.post(`/challenges/${challenge._id}/flag`))
.to.eventually.be.rejected.and.eql({
code: 404,
error: 'NotFound',
message: t('messageChallengeFlagOfficial'),
});
});
});

View File

@@ -331,5 +331,71 @@ describe('POST /challenges', () => {
expect(updatedChallenge.summary).to.eql(summary);
});
it('sets categories for challenges', async () => {
const testCategory = { _id: '65c1172997c0b24600371ea9', slug: 'test', name: 'Test' };
const challenge = await groupLeader.post('/challenges', {
group: group._id,
name: 'Test Challenge',
shortName: 'TC Label',
categories: [testCategory],
});
const updatedChallenge = await groupLeader.get(`/challenges/${challenge._id}`);
expect(updatedChallenge.categories).to.eql([testCategory]);
});
it('does not set habitica_official category for non-admins', async () => {
const testCategory = { _id: '65c1172997c0b24600371ea9', slug: 'habitica_official', name: 'habitica_official' };
await expect(groupLeader.post('/challenges', {
group: group._id,
name: 'Test Challenge',
shortName: 'TC Label',
categories: [testCategory],
})).to.eventually.be.rejected.and.eql({
code: 401,
error: 'NotAuthorized',
message: t('noPrivAccess'),
});
});
it('sets habitica_official category for admins', async () => {
await groupLeader.updateOne({
permissions: {
challengeAdmin: true,
},
});
const testCategory = { _id: '65c1172997c0b24600371ea9', slug: 'habitica_official', name: 'habitica_official' };
const challenge = await groupLeader.post('/challenges', {
group: group._id,
name: 'Test Challenge',
shortName: 'TC Label',
categories: [testCategory],
});
const updatedChallenge = await groupLeader.get(`/challenges/${challenge._id}`);
expect(updatedChallenge.categories).to.eql([testCategory]);
});
it('sets official if the habitica_official category is set for admins', async () => {
await groupLeader.updateOne({
permissions: {
challengeAdmin: true,
},
});
const testCategory = { _id: '65c1172997c0b24600371ea9', slug: 'habitica_official', name: 'habitica_official' };
const challenge = await groupLeader.post('/challenges', {
group: group._id,
name: 'Test Challenge',
shortName: 'TC Label',
categories: [testCategory],
});
const updatedChallenge = await groupLeader.get(`/challenges/${challenge._id}`);
expect(updatedChallenge.official).to.eql(true);
});
});
});

View File

@@ -39,17 +39,6 @@ describe('POST /chat/:chatId/like', () => {
});
});
it('Returns an error when user tries to like their own message', async () => {
const message = await user.post(`/groups/${groupWithChat._id}/chat`, { message: testMessage });
await expect(user.post(`/groups/${groupWithChat._id}/chat/${message.message.id}/like`))
.to.eventually.be.rejected.and.eql({
code: 404,
error: 'NotFound',
message: t('messageGroupChatLikeOwnMessage'),
});
});
it('Likes a chat', async () => {
const message = await anotherUser.post(`/groups/${groupWithChat._id}/chat`, { message: testMessage });
@@ -63,6 +52,19 @@ describe('POST /chat/:chatId/like', () => {
expect(messageToCheck.likes[user._id]).to.equal(true);
});
it('Allows to likes their own chat message', async () => {
const message = await user.post(`/groups/${groupWithChat._id}/chat`, { message: testMessage });
const likeResult = await user.post(`/groups/${groupWithChat._id}/chat/${message.message.id}/like`);
expect(likeResult.likes[user._id]).to.equal(true);
const groupWithChatLikes = await user.get(`/groups/${groupWithChat._id}`);
const messageToCheck = find(groupWithChatLikes.chat, { id: message.message.id });
expect(messageToCheck.likes[user._id]).to.equal(true);
});
it('Unlikes a chat', async () => {
const message = await anotherUser.post(`/groups/${groupWithChat._id}/chat`, { message: testMessage });

View File

@@ -2,7 +2,7 @@ import {
generateUser,
resetHabiticaDB,
} from '../../../../helpers/api-integration/v3';
import apiError from '../../../../../website/server/libs/apiError';
import { apiError } from '../../../../../website/server/libs/apiError';
describe('GET /coupons/', () => {
let user;

View File

@@ -4,7 +4,7 @@ import {
translate as t,
resetHabiticaDB,
} from '../../../../helpers/api-integration/v3';
import apiError from '../../../../../website/server/libs/apiError';
import { apiError } from '../../../../../website/server/libs/apiError';
describe('POST /coupons/generate/:event', () => {
let user;

View File

@@ -9,7 +9,7 @@ describe('GET /heroes/:heroId', () => {
const heroFields = [
'_id', 'id', 'auth', 'balance', 'contributor', 'flags', 'items',
'lastCron', 'party', 'preferences', 'profile', 'purchased', 'secret',
'lastCron', 'party', 'preferences', 'profile', 'purchased', 'secret', 'achievements',
];
before(async () => {

View File

@@ -4,7 +4,7 @@ import {
generateGroup,
translate as t,
} from '../../../../helpers/api-integration/v3';
import apiError from '../../../../../website/server/libs/apiError';
import { apiError } from '../../../../../website/server/libs/apiError';
describe('GET /heroes/party/:groupId', () => {
let user; // admin user

View File

@@ -10,7 +10,7 @@ describe('PUT /heroes/:heroId', () => {
const heroFields = [
'_id', 'auth', 'balance', 'contributor', 'flags', 'items', 'lastCron',
'party', 'preferences', 'profile', 'purchased', 'secret', 'permissions',
'party', 'preferences', 'profile', 'purchased', 'secret', 'permissions', 'achievements',
];
before(async () => {
@@ -251,4 +251,159 @@ describe('PUT /heroes/:heroId', () => {
expect(updatedHero.apiToken).to.not.equal(originalToken);
expect(updatedHero.apiTokenObscured).to.not.exist;
});
it('updates purchased hair customization', async () => {
const hero = await generateUser();
const heroRes = await user.put(`/hall/heroes/${hero._id}`, {
purchasedPath: 'purchased.hair.bangs.1',
purchasedVal: true,
});
// test response
expect(heroRes).to.have.all.keys(heroFields);
expect(heroRes.auth.local).not.to.have.keys(['salt', 'hashed_password']);
expect(heroRes.profile).to.have.all.keys(['name']);
// test response values
expect(heroRes.purchased.hair.bangs['1']).to.equal(true);
// test hero values
await hero.sync();
expect(hero.purchased.hair.bangs['1']).to.equal(true);
});
it('updates purchased customization', async () => {
const hero = await generateUser();
const heroRes = await user.put(`/hall/heroes/${hero._id}`, {
purchasedPath: 'purchased.background.beach',
purchasedVal: true,
});
// test response
expect(heroRes).to.have.all.keys(heroFields);
expect(heroRes.auth.local).not.to.have.keys(['salt', 'hashed_password']);
expect(heroRes.profile).to.have.all.keys(['name']);
// test response values
expect(heroRes.purchased.background.beach).to.equal(true);
// test hero values
await hero.sync();
expect(hero.purchased.background.beach).to.equal(true);
});
it('updates giving nested achievement', async () => {
const hero = await generateUser();
const heroRes = await user.put(`/hall/heroes/${hero._id}`, {
achievementPath: 'achievements.quests.dilatory',
achievementVal: 2,
});
// test response
expect(heroRes).to.have.all.keys(heroFields);
expect(heroRes.auth.local).not.to.have.keys(['salt', 'hashed_password']);
expect(heroRes.profile).to.have.all.keys(['name']);
// test response values
expect(heroRes.achievements.quests.dilatory).to.equal(2);
// test hero values
await hero.sync();
expect(hero.achievements.quests.dilatory).to.equal(2);
});
it('updates taking away nested achievement', async () => {
const hero = await generateUser({ 'achievements.quests.dilatory': 3 });
expect(hero.achievements.quests.dilatory).to.equal(3);
const heroRes = await user.put(`/hall/heroes/${hero._id}`, {
achievementPath: 'achievements.quests.dilatory',
achievementVal: 0,
});
// test response
expect(heroRes).to.have.all.keys(heroFields);
expect(heroRes.auth.local).not.to.have.keys(['salt', 'hashed_password']);
expect(heroRes.profile).to.have.all.keys(['name']);
// test response values
expect(heroRes.achievements.quests.dilatory).to.equal(0);
// test hero values
await hero.sync();
expect(hero.achievements.quests.dilatory).to.equal(0);
});
it('updates giving achievement', async () => {
const hero = await generateUser();
const heroRes = await user.put(`/hall/heroes/${hero._id}`, {
achievementPath: 'achievements.partyOn',
achievementVal: true,
});
// test response
expect(heroRes).to.have.all.keys(heroFields);
expect(heroRes.auth.local).not.to.have.keys(['salt', 'hashed_password']);
expect(heroRes.profile).to.have.all.keys(['name']);
// test response values
expect(heroRes.achievements.partyOn).to.equal(true);
// test hero values
await hero.sync();
expect(hero.achievements.partyOn).to.equal(true);
});
it('updates taking away achievement', async () => {
const hero = await generateUser({ 'achievements.partyUp': true });
expect(hero.achievements.partyUp).to.equal(true);
const heroRes = await user.put(`/hall/heroes/${hero._id}`, {
achievementPath: 'achievements.partyUp',
achievementVal: false,
});
// test response
expect(heroRes).to.have.all.keys(heroFields);
expect(heroRes.auth.local).not.to.have.keys(['salt', 'hashed_password']);
expect(heroRes.profile).to.have.all.keys(['name']);
// test response values
expect(heroRes.achievements.partyUp).to.equal(false);
// test hero values
await hero.sync();
expect(hero.achievements.partyUp).to.equal(false);
});
it('updates giving numbered achievement', async () => {
const hero = await generateUser();
const heroRes = await user.put(`/hall/heroes/${hero._id}`, {
achievementPath: 'achievements.streak',
achievementVal: 42,
});
// test response
expect(heroRes).to.have.all.keys(heroFields);
expect(heroRes.auth.local).not.to.have.keys(['salt', 'hashed_password']);
expect(heroRes.profile).to.have.all.keys(['name']);
// test response values
expect(heroRes.achievements.streak).to.equal(42);
// test hero values
await hero.sync();
expect(hero.achievements.streak).to.equal(42);
});
it('updates setting numbered achievement to 0', async () => {
const hero = await generateUser({ 'achievements.streak': 42 });
expect(hero.achievements.streak).to.equal(42);
const heroRes = await user.put(`/hall/heroes/${hero._id}`, {
achievementPath: 'achievements.streak',
achievementVal: 0,
});
// test response
expect(heroRes).to.have.all.keys(heroFields);
expect(heroRes.auth.local).not.to.have.keys(['salt', 'hashed_password']);
expect(heroRes.profile).to.have.all.keys(['name']);
// test response values
expect(heroRes.achievements.streak).to.equal(0);
// test hero values
await hero.sync();
expect(hero.achievements.streak).to.equal(0);
});
});

View File

@@ -2,7 +2,7 @@ import {
generateUser,
} from '../../../../../helpers/api-integration/v3';
import paypalPayments from '../../../../../../website/server/libs/payments/paypal';
import apiError from '../../../../../../website/server/libs/apiError';
import { apiError } from '../../../../../../website/server/libs/apiError';
describe('payments : paypal #checkoutSuccess', () => {
const endpoint = '/paypal/checkout/success';

View File

@@ -3,7 +3,7 @@ import {
} from '../../../../../helpers/api-integration/v3';
import paypalPayments from '../../../../../../website/server/libs/payments/paypal';
import shared from '../../../../../../website/common';
import apiError from '../../../../../../website/server/libs/apiError';
import { apiError } from '../../../../../../website/server/libs/apiError';
describe('payments : paypal #subscribe', () => {
const endpoint = '/paypal/subscribe';

View File

@@ -1,7 +1,7 @@
import {
generateUser,
} from '../../../../../helpers/api-integration/v3';
import apiError from '../../../../../../website/server/libs/apiError';
import { apiError } from '../../../../../../website/server/libs/apiError';
import paypalPayments from '../../../../../../website/server/libs/payments/paypal';
describe('payments : paypal #subscribeSuccess', () => {

View File

@@ -7,7 +7,7 @@ import {
} from '../../../../helpers/api-integration/v3';
import { quests as questScrolls } from '../../../../../website/common/script/content/quests';
import { chatModel as Chat } from '../../../../../website/server/models/message';
import apiError from '../../../../../website/server/libs/apiError';
import { apiError } from '../../../../../website/server/libs/apiError';
describe('POST /groups/:groupId/quests/invite/:questKey', () => {
let questingGroup;

View File

@@ -1,5 +1,5 @@
import { v4 as generateUUID } from 'uuid';
import apiError from '../../../../../website/server/libs/apiError';
import { apiError } from '../../../../../website/server/libs/apiError';
import {
generateUser,
sleep,

View File

@@ -8,7 +8,7 @@ import {
generateChallenge,
sleep,
} from '../../../../helpers/api-integration/v3';
import apiError from '../../../../../website/server/libs/apiError';
import { apiError } from '../../../../../website/server/libs/apiError';
describe('POST /user/class/cast/:spellId', () => {
let user;

View File

@@ -5,7 +5,7 @@ import {
translate as t,
} from '../../../../../helpers/api-integration/v3';
import shared from '../../../../../../website/common/script';
import apiError from '../../../../../../website/server/libs/apiError';
import { apiError } from '../../../../../../website/server/libs/apiError';
const { content } = shared;

View File

@@ -3,7 +3,7 @@
import {
generateUser,
} from '../../../../../helpers/api-integration/v3';
import apiError from '../../../../../../website/server/libs/apiError';
import { apiError } from '../../../../../../website/server/libs/apiError';
describe('POST /user/buy-gear/:key', () => {
let user;

View File

@@ -3,7 +3,7 @@ import {
translate as t,
} from '../../../../../helpers/api-integration/v3';
import shared from '../../../../../../website/common/script';
import apiError from '../../../../../../website/server/libs/apiError';
import { apiError } from '../../../../../../website/server/libs/apiError';
const { content } = shared;

View File

@@ -3,7 +3,7 @@ import {
translate as t,
} from '../../../../../helpers/api-integration/v3';
import shared from '../../../../../../website/common/script';
import apiError from '../../../../../../website/server/libs/apiError';
import { apiError } from '../../../../../../website/server/libs/apiError';
const { content } = shared;

View File

@@ -2,7 +2,7 @@ import {
generateUser,
translate as t,
} from '../../../../../helpers/api-integration/v3';
import apiError from '../../../../../../website/server/libs/apiError';
import { apiError } from '../../../../../../website/server/libs/apiError';
describe('POST /user/allocate', () => {
let user;

View File

@@ -3,7 +3,7 @@ import {
generateUser,
translate as t,
} from '../../../../helpers/api-integration/v3';
import apiError from '../../../../../website/server/libs/apiError';
import { apiError } from '../../../../../website/server/libs/apiError';
describe('POST /user/webhook', () => {
let user; let

View File

@@ -3,7 +3,7 @@ import {
generateUser,
translate as t,
} from '../../../../helpers/api-integration/v3';
import apiError from '../../../../../website/server/libs/apiError';
import { apiError } from '../../../../../website/server/libs/apiError';
describe('PUT /user/webhook/:id', () => {
let user; let

View File

@@ -8,7 +8,7 @@ import {
generateChallenge,
sleep,
} from '../../../helpers/api-integration/v4';
import apiError from '../../../../website/server/libs/apiError';
import { apiError } from '../../../../website/server/libs/apiError';
describe('POST /user/class/cast/:spellId', () => {
let user;

View File

@@ -9,7 +9,7 @@ import {
} from '../../../../website/common/script/libs/errors';
import i18n from '../../../../website/common/script/i18n';
import content from '../../../../website/common/script/content/index';
import errorMessage from '../../../../website/common/script/libs/errorMessage';
import { errorMessage } from '../../../../website/common/script/libs/errorMessage';
describe('shared.ops.buy', () => {
let user;

View File

@@ -11,7 +11,7 @@ import {
BadRequest, NotAuthorized, NotFound,
} from '../../../../website/common/script/libs/errors';
import i18n from '../../../../website/common/script/i18n';
import errorMessage from '../../../../website/common/script/libs/errorMessage';
import { errorMessage } from '../../../../website/common/script/libs/errorMessage';
async function buyGear (user, req, analytics) {
const buyOp = new BuyMarketGearOperation(user, req, analytics);

View File

@@ -10,7 +10,7 @@ import {
NotFound,
} from '../../../../website/common/script/libs/errors';
import i18n from '../../../../website/common/script/i18n';
import errorMessage from '../../../../website/common/script/libs/errorMessage';
import { errorMessage } from '../../../../website/common/script/libs/errorMessage';
describe('shared.ops.buyMysterySet', () => {
let user;

View File

@@ -8,7 +8,7 @@ import {
NotFound,
} from '../../../../website/common/script/libs/errors';
import i18n from '../../../../website/common/script/i18n';
import errorMessage from '../../../../website/common/script/libs/errorMessage';
import { errorMessage } from '../../../../website/common/script/libs/errorMessage';
describe('shared.ops.buyQuest', () => {
let user;

View File

@@ -9,7 +9,7 @@ import {
generateUser,
} from '../../../helpers/common.helper';
import content from '../../../../website/common/script/content/index';
import errorMessage from '../../../../website/common/script/libs/errorMessage';
import { errorMessage } from '../../../../website/common/script/libs/errorMessage';
describe('shared.ops.buySpecialSpell', () => {
let user;

View File

@@ -8,7 +8,7 @@ import content from '../../../../website/common/script/content/index';
import {
generateUser,
} from '../../../helpers/common.helper';
import errorMessage from '../../../../website/common/script/libs/errorMessage';
import { errorMessage } from '../../../../website/common/script/libs/errorMessage';
import { BuyHourglassMountOperation } from '../../../../website/common/script/ops/buy/buyMount';
describe('common.ops.hourglassPurchase', () => {

View File

@@ -197,7 +197,7 @@ describe('shared.ops.purchase', () => {
it('purchases quest bundles', async () => {
const startingBalance = user.balance;
const clock = sandbox.useFakeTimers(moment('2022-03-16').valueOf());
const clock = sandbox.useFakeTimers(moment('2024-03-20').valueOf());
const type = 'bundles';
const key = 'cuddleBuddies';
const price = 1.75;

View File

@@ -9,7 +9,7 @@ import i18n from '../../../website/common/script/i18n';
import {
generateUser,
} from '../../helpers/common.helper';
import errorMessage from '../../../website/common/script/libs/errorMessage';
import { errorMessage } from '../../../website/common/script/libs/errorMessage';
import shared from '../../../website/common/script';
describe('shared.ops.feed', () => {

View File

@@ -8,7 +8,7 @@ import i18n from '../../../website/common/script/i18n';
import {
generateUser,
} from '../../helpers/common.helper';
import errorMessage from '../../../website/common/script/libs/errorMessage';
import { errorMessage } from '../../../website/common/script/libs/errorMessage';
import shared from '../../../website/common/script';
describe('shared.ops.hatch', () => {

View File

@@ -1,4 +1,4 @@
import sleep from '../../../website/common/script/ops/sleep';
import { sleep } from '../../../website/common/script/ops/sleep';
import {
generateUser,
} from '../../helpers/common.helper';

View File

@@ -7,7 +7,7 @@ import i18n from '../../../../website/common/script/i18n';
import {
generateUser,
} from '../../../helpers/common.helper';
import errorMessage from '../../../../website/common/script/libs/errorMessage';
import { errorMessage } from '../../../../website/common/script/libs/errorMessage';
describe('shared.ops.allocate', () => {
let user;

View File

@@ -7,7 +7,7 @@ import i18n from '../../../../website/common/script/i18n';
import {
generateUser,
} from '../../../helpers/common.helper';
import errorMessage from '../../../../website/common/script/libs/errorMessage';
import { errorMessage } from '../../../../website/common/script/libs/errorMessage';
describe('shared.ops.allocateBulk', () => {
let user;

View File

@@ -1 +1 @@
export { default as sleep } from '../../website/server/libs/sleep'; // eslint-disable-line import/prefer-default-export
export { sleep } from '../../website/server/libs/sleep'; // eslint-disable-line import/prefer-default-export

View File

@@ -1,7 +1,12 @@
/* eslint-disable no-process-env */
import nconf from 'nconf';
import mongoose from 'mongoose';
import setupNconf from '../../website/server/libs/setupNconf';
/* eslint-disable import/no-commonjs */
const nconf = require('nconf');
const mongoose = require('mongoose');
const setupNconf = require('../../website/server/libs/setupNconf');
// fix further imports of require/import syntaxes
require('@babel/register');
if (process.env.LOAD_SERVER === '0') { // when the server is in a different process we simply connect to mongoose
setupNconf('./config.json');

View File

@@ -12,11 +12,19 @@ module.exports = {
'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off',
'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
// TODO find a way to let eslint understand webpack aliases
'import/no-extraneous-dependencies': 'off',
'import/no-unresolved': 'off',
'import/no-extraneous-dependencies': 'off',
'import/extensions': 'off',
'prefer-regex-literals': 'warn',
'vue/no-v-html': 'off',
'vue/no-mutating-props': 'warn',
// this creates issues with the current way we have to push the process.env vars to webpack
// https://github.com/eslint/eslint/issues/14918
// https://github.com/webpack/webpack/issues/5392
// off for now, because any eslint --fix will then still do it anyway
// maybe this can be turned on again once we switch to newer vue/vite
// Important! process.env.XYZ should not be destructured
'prefer-destructuring': 'off',
'vue/html-self-closing': ['error', {
html: {
void: 'never',
@@ -27,6 +35,9 @@ module.exports = {
svg: 'never',
math: 'never',
}],
'vue/component-tags-order': ['warn', {
order: ['template', 'style', 'script'],
}],
},
parserOptions: {
parser: 'babel-eslint',

File diff suppressed because it is too large Load Diff

View File

@@ -12,10 +12,10 @@
},
"dependencies": {
"@vue/cli-plugin-babel": "^5.0.8",
"@vue/cli-plugin-eslint": "^4.5.19",
"@vue/cli-plugin-eslint": "^5.0.8",
"@vue/cli-plugin-router": "^5.0.8",
"@vue/cli-plugin-unit-mocha": "^5.0.8",
"@vue/cli-service": "^4.5.15",
"@vue/cli-service": "^5.0.8",
"@vue/test-utils": "1.0.0-beta.29",
"amplitude-js": "^8.21.3",
"axios": "^0.27.2",
@@ -26,10 +26,10 @@
"chai": "^4.3.7",
"core-js": "^3.33.1",
"dompurify": "^3.0.3",
"eslint": "^7.32.0",
"eslint-config-habitrpg": "^6.2.3",
"eslint-plugin-mocha": "^5.3.0",
"eslint-plugin-vue": "^7.20.0",
"eslint": "7.32.0",
"eslint-config-habitrpg": "6.2.0",
"eslint-plugin-mocha": "5.3.0",
"eslint-plugin-vue": "7.20.0",
"habitica-markdown": "^3.0.0",
"hellojs": "^1.20.0",
"inspectpack": "^4.7.1",
@@ -42,10 +42,6 @@
"sass-loader": "^8.0.2",
"smartbanner.js": "^1.19.3",
"stopword": "^2.0.8",
"svg-inline-loader": "^0.8.2",
"svg-url-loader": "^7.1.1",
"svgo": "^1.3.2",
"svgo-loader": "^2.2.1",
"uuid": "^9.0.1",
"validator": "^13.9.0",
"vue": "^2.7.10",
@@ -56,7 +52,7 @@
"vue-template-compiler": "^2.7.10",
"vuedraggable": "^2.24.3",
"vuejs-datepicker": "git://github.com/habitrpg/vuejs-datepicker.git#153d339e4dbebb73733658aeda1d5b7fcc55b0a0",
"webpack": "^4.47.0"
"webpack": "^5.89.0"
},
"devDependencies": {
"@babel/plugin-proposal-optional-chaining": "^7.21.0"

View File

@@ -27,9 +27,9 @@
</head>
<body>
<div id="loading-screen">
<svg id="melior" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 61.91 64">
<path d="M61.82,64H51.59c-3.08,0-3.72.37-3.67-1,0.07-1.87.67-1.94,2.63-2.49,1.63-.45,1-3.35-0.8-5.88-1.28-1.76-3.89-3.81-7.31-2.22a10.75,10.75,0,0,0-4.56,3.52c-1.68,2.33-1.59,4.54,1,4.54s5.39-1.5,6.23.64c1,2.64.33,2.89-.18,2.89H28.55v0C19.77,64,11,63.93,9,58.38c-2.82-7.68,7.43-10.64,7.75-15.46,0.13-2-1-2.85-2.34-2.85h-6V36.41H4.7v-11H8.36V29.1H12v3.65h3.65v5.08a5.76,5.76,0,0,1,3.07,5.05c-0.17,5.51-9.5,8.57-7.79,14.35,1.56,5.29,13.37,4,13,.74L23.7,56.1c-0.06-2.62-.47-6.12.08-9.22C24.64,42,27.67,37.78,33,37.74c1,0,1.78-.21,1.78-1s-1.55-.84-2.64-0.95a23.35,23.35,0,0,1-12.56-5c-2.43-2-6.21-8.3-3.74-7.83a21.74,21.74,0,0,0,4.06.4c1.24,0,4.44-.35,4.44-1.11,0-1-1.85-.42-4.57-0.68C16.48,21.22,9.6,19.83,6,9.35,4.71,5.43,3.83-1.91,6,.46c12.46,13.7,16.69,11.47,23.84,16.16,3.15,2.06,5.19,7,7,6.58,1.2-.27.46-1.37,0.64-3.93C37.66,17,38.75,16.48,36,15.79c-3.26-.81-6.52-4.38-4.39-4.33a11.89,11.89,0,0,0,5.53-.76c1.87-.81,6.43-4.28,9.18-2.89s5.08-.6,6.94-0.25c2.71,0.51,3.41,4.24,3.05,6.42-0.22,1.38-.22,1.38-2,1.28-3.61-.21-4.53,2.67-2,4.25,3.87,2.42,5.51,4.23,6.56,9.58,0.51,2.6.1,3.2-.76,2.72s-2.34-.72-0.29,4-1.29,10.28-2.39,10.9a1.3,1.3,0,0,0-.91,1.34c0,11.42,0,12.27,1.92,12.48,2.9,0.31,4.14-1.44,5.27.06C63.29,62.73,63.41,64,61.82,64ZM4.7,21.28H1v3.65H4.7V21.28Z" transform="translate(-1.05)" fill="#fff" />
</svg>
<svg width="32" height="32" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M31.62 28.86c-.32-.706-1.057-1.048-1.538-.706-.48.341-1.147.393-1.78.24-.633-.153-.753-1.604-.616-3.278.136-1.673.363-2.318.506-2.925.162-.61.877-.562.962-.084.086.479.582.479 1.307-.391.724-.87.617-3.409-.218-5.474-.836-2.065.326-1.865.664-1.66.337.205.544-.102.462-1.28-.082-1.178-1.166-2.098-2.039-2.663-.873-.564-1.936-1.186-1.911-2.697.025-1.511 2.08-1.464 2.358-1.439.279.025.815-.093.506-1.663-.31-1.57-1.43-1.869-2.133-1.826-.703.042-1.177.428-2.17.053-.995-.376-1.655-.23-2.58-.023-.926.206-2.138.776-3.646 1.183-.795.219-1.064.274-1.93.288-.532.008-.755.653-.043 1.444.563.643 1.839.814 2.606.707.494-.07.608.258.563.74a8.013 8.013 0 0 0-.01 1.795c.08.6.18 1.62-.103 2.286-.14.326-.545.677-.98.653-.565-.034-1.022-.7-1.414-1.49-.825-1.662-1.793-2.014-5.404-3.535-3.248-1.367-5.007-3.5-6.096-4.874-.969-1.217-1.939-.756-1.85.342.07.852.592 3.604 1.912 5.257 1.623 2.525 4.128 3.67 7.013 3.895.755.06 1.226.208 1.29.553.095.735-.622 1.244-1.959 1.09-1.336-.157-1.907.087-1.641.848.85 1.79 2.809 1.869 3.623 1.942.275.05 1.246 0 1.764.143.605.166.735 1.005-.14 1.459-1.558.76-2.237 1.391-3.025 2.83-.595 1.13-1.108 3.022-.574 5.745.513 2.648-3.337 2.733-5 2.357-.716-.151-1.47-1.512.287-2.65 1.421-.922 1.708-1.49 1.645-2.657-.074-1.36-.824-1.458-.822-2.64v-2.82a.435.435 0 0 0-.435-.435H7.698a.435.435 0 0 1-.435-.434v-1.7a.435.435 0 0 0-.435-.435H5.501a.435.435 0 0 1-.435-.435v-1.524a.435.435 0 0 0-.435-.435H3.015a.435.435 0 0 1-.435-.435v-1.603a.435.435 0 0 0-.435-.434H.435a.435.435 0 0 0-.435.434v1.705c0 .24.195.435.435.435h1.62c.24 0 .435.195.435.435v6.076c0 .241.195.435.435.435h1.71c.241 0 .436.196.436.435v1.988c0 .24.195.434.435.434h2.402c.734-.052.862.934.854 1.286-.016.803-.923 1.06-1.352 1.395-1.145.884-2.031 1.783-1.513 3.512l.013.036c.945 2.007 3.542 1.8 5.183 1.8h10.326c.584 0 1.184.135 1.046-.545-.136-.68-.425-1.61-1.265-1.61-.84 0-.703.467-1.524.228-.821-.238-.822-1.348.411-3.279 1.276-1.649 3.46-1.524 4.781-.358 1.32 1.166.93 3.191.653 4.354-.158.82.218 1.224.669 1.213h5.242c.806-.014.647-.556.185-1.614h.003z" fill="#fff"/>
</svg>
</div>
<div id="app"></div>

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 5.5 KiB

After

Width:  |  Height:  |  Size: 5.5 KiB

View File

@@ -9,14 +9,19 @@
<!-- eslint-disable max-len -->
<svg
id="melior"
class="color svg svg-icon"
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 61.91 64"
viewBox="0 0 80 80"
>
// eslint-disable-next-line vue/html-self-closing
<path
d="M61.82,64H51.59c-3.08,0-3.72.37-3.67-1,0.07-1.87.67-1.94,2.63-2.49,1.63-.45,1-3.35-0.8-5.88-1.28-1.76-3.89-3.81-7.31-2.22a10.75,10.75,0,0,0-4.56,3.52c-1.68,2.33-1.59,4.54,1,4.54s5.39-1.5,6.23.64c1,2.64.33,2.89-.18,2.89H28.55v0C19.77,64,11,63.93,9,58.38c-2.82-7.68,7.43-10.64,7.75-15.46,0.13-2-1-2.85-2.34-2.85h-6V36.41H4.7v-11H8.36V29.1H12v3.65h3.65v5.08a5.76,5.76,0,0,1,3.07,5.05c-0.17,5.51-9.5,8.57-7.79,14.35,1.56,5.29,13.37,4,13,.74L23.7,56.1c-0.06-2.62-.47-6.12.08-9.22C24.64,42,27.67,37.78,33,37.74c1,0,1.78-.21,1.78-1s-1.55-.84-2.64-0.95a23.35,23.35,0,0,1-12.56-5c-2.43-2-6.21-8.3-3.74-7.83a21.74,21.74,0,0,0,4.06.4c1.24,0,4.44-.35,4.44-1.11,0-1-1.85-.42-4.57-0.68C16.48,21.22,9.6,19.83,6,9.35,4.71,5.43,3.83-1.91,6,.46c12.46,13.7,16.69,11.47,23.84,16.16,3.15,2.06,5.19,7,7,6.58,1.2-.27.46-1.37,0.64-3.93C37.66,17,38.75,16.48,36,15.79c-3.26-.81-6.52-4.38-4.39-4.33a11.89,11.89,0,0,0,5.53-.76c1.87-.81,6.43-4.28,9.18-2.89s5.08-.6,6.94-0.25c2.71,0.51,3.41,4.24,3.05,6.42-0.22,1.38-.22,1.38-2,1.28-3.61-.21-4.53,2.67-2,4.25,3.87,2.42,5.51,4.23,6.56,9.58,0.51,2.6.1,3.2-.76,2.72s-2.34-.72-0.29,4-1.29,10.28-2.39,10.9a1.3,1.3,0,0,0-.91,1.34c0,11.42,0,12.27,1.92,12.48,2.9,0.31,4.14-1.44,5.27.06C63.29,62.73,63.41,64,61.82,64ZM4.7,21.28H1v3.65H4.7V21.28Z"
transform="translate(-1.05)"
xmlns="http://www.w3.org/2000/svg"
fill-rule="evenodd"
clip-rule="evenodd"
d="M79.05 72.15c-.8-1.766-2.643-2.62-3.845-1.766-1.201.855-2.867.985-4.448.602-1.584-.385-1.885-4.01-1.543-8.195.342-4.184.909-5.795 1.267-7.314.404-1.524 2.191-1.404 2.405-.209.215 1.196 1.454 1.196 3.266-.979 1.811-2.175 1.543-8.52-.546-13.684-2.088-5.163.817-4.661 1.66-4.149.844.513 1.362-.255 1.156-3.2-.204-2.945-2.916-5.247-5.096-6.657-2.184-1.41-4.842-2.967-4.78-6.745.063-3.777 5.2-3.658 5.897-3.596.697.063 2.037-.233 1.264-4.157-.773-3.924-3.575-4.673-5.332-4.567-1.758.106-2.943 1.071-5.427.133-2.484-.938-4.136-.572-6.45-.057-2.313.515-5.343 1.94-9.112 2.959-1.989.545-2.661.683-4.828.718-1.33.02-1.885 1.633-.106 3.61 1.408 1.608 4.597 2.036 6.515 1.768 1.236-.174 1.521.645 1.407 1.85a20.023 20.023 0 0 0-.024 4.488c.198 1.5.45 4.051-.258 5.713-.35.817-1.361 1.693-2.449 1.633-1.413-.084-2.555-1.75-3.537-3.726-2.06-4.152-4.48-5.033-13.509-8.835-8.12-3.417-12.516-8.749-15.24-12.185-2.421-3.042-4.846-1.89-4.626.855.179 2.128 1.48 9.008 4.781 13.141 4.058 6.314 10.32 9.177 17.534 9.739 1.885.149 3.065.52 3.225 1.383.236 1.835-1.557 3.11-4.898 2.722-3.341-.39-4.768.22-4.103 2.121 2.123 4.477 7.021 4.672 9.058 4.857.686.122 3.114 0 4.41.355 1.51.418 1.836 2.514-.353 3.648-3.892 1.903-5.59 3.479-7.561 7.075-1.486 2.826-2.77 7.555-1.435 14.365 1.283 6.62-8.342 6.83-12.497 5.89-1.793-.377-3.675-3.778.716-6.625 3.553-2.305 4.269-3.724 4.111-6.642-.184-3.4-2.058-3.644-2.053-6.598v-7.05c0-.602-.488-1.088-1.087-1.088h-3.334a1.087 1.087 0 0 1-1.087-1.087v-4.25c0-.602-.488-1.087-1.088-1.087h-3.317a1.087 1.087 0 0 1-1.087-1.088v-3.81c0-.602-.489-1.087-1.088-1.087h-4.04a1.087 1.087 0 0 1-1.089-1.088V26.25c0-.602-.488-1.088-1.087-1.088H1.088C.485 25.161 0 25.65 0 26.25v4.26c0 .602.488 1.087 1.088 1.087h4.049c.602 0 1.087.489 1.087 1.088v15.192c0 .602.489 1.087 1.088 1.087h4.277c.602 0 1.088.489 1.088 1.088v4.968c0 .602.488 1.087 1.087 1.087h6.005c1.836-.13 2.156 2.335 2.137 3.214-.04 2.007-2.308 2.652-3.382 3.487-2.861 2.21-5.077 4.459-3.78 8.781l.032.09c2.362 5.017 8.855 4.499 12.956 4.499h25.817c1.459 0 2.959.339 2.614-1.362-.342-1.7-1.063-4.024-3.162-4.024-2.1 0-1.758 1.166-3.81.57-2.054-.597-2.057-3.371 1.027-8.198 3.19-4.122 8.652-3.81 11.952-.895 3.301 2.915 2.325 7.978 1.633 10.885-.396 2.048.545 3.06 1.67 3.032H78.58c2.015-.035 1.62-1.391.464-4.035h.008z"
fill="#fff"
></path>
>
</path>
</svg>
<!-- eslint-enable max-len -->
</div>
@@ -91,8 +96,11 @@
#loading-screen-inapp {
#melior {
color: $white;
height: 80px;
margin: 0 auto;
width: 70.9px;
object-fit: contain;
width: 80px;
}
.row {

View File

@@ -22,7 +22,7 @@
height: 219px;
}
.Pet_HatchingPotion_Dessert, .Pet_HatchingPotion_Veggie, .Pet_HatchingPotion_Windup, .Pet_HatchingPotion_VirtualPet {
.Pet_HatchingPotion_Dessert, .Pet_HatchingPotion_Veggie, .Pet_HatchingPotion_Windup, .Pet_HatchingPotion_VirtualPet, .Pet_HatchingPotion_Fungi {
width: 68px;
height: 68px;
}
@@ -43,6 +43,10 @@
background: url("https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet_HatchingPotion_VirtualPet.gif") no-repeat;
}
.Pet_HatchingPotion_Fungi {
background: url("https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet_HatchingPotion_Fungi.gif") no-repeat;
}
.Gems {
display:inline-block;
margin-right:5px;

View File

@@ -343,6 +343,11 @@
width: 60px;
height: 64px;
}
.achievement-rodentRuler2x {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/achievement-rodentRuler2x.png');
width: 68px;
height: 68px;
}
.achievement-rosyOutlook2x {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/achievement-rosyOutlook2x.png');
width: 64px;
@@ -835,6 +840,11 @@
width: 141px;
height: 147px;
}
.background_container_garden {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_container_garden.png');
width: 141px;
height: 147px;
}
.background_coral_reef {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_coral_reef.png');
width: 141px;
@@ -955,6 +965,11 @@
width: 141px;
height: 147px;
}
.background_dog_park {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_dog_park.png');
width: 141px;
height: 147px;
}
.background_dojo {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_dojo.png');
width: 141px;
@@ -1087,6 +1102,17 @@
width: 60px;
height: 60px;
}
.background_flowering_forest {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_flowering_forest.png');
width: 141px;
height: 147px;
}
.customize-option.background_flowering_forest {
background-position: -25px -15px;
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_flowering_forest.png');
width: 60px;
height: 60px;
}
.background_flowering_prairie {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_flowering_prairie.png');
width: 141px;
@@ -1164,6 +1190,11 @@
width: 141px;
height: 147px;
}
.background_forest_sunset {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_forest_sunset.png');
width: 141px;
height: 147px;
}
.background_forested_lakeshore {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_forested_lakeshore.png');
width: 141px;
@@ -1799,6 +1830,11 @@
width: 141px;
height: 147px;
}
.background_rainy_rainforest {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_rainy_rainforest.png');
width: 141px;
height: 147px;
}
.background_red {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_red.png');
width: 141px;
@@ -2249,6 +2285,17 @@
width: 141px;
height: 147px;
}
.background_wall_flowering_vines {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_wall_flowering_vines.png');
width: 141px;
height: 147px;
}
.customize-option.background_wall_flowering_vines {
background-position: -25px -15px;
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_wall_flowering_vines.png');
width: 60px;
height: 60px;
}
.background_water_mill {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_water_mill.png');
width: 141px;
@@ -2628,8 +2675,8 @@
}
.icon_background_cemetery_gate {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_cemetery_gate.png');
width: 60px;
height: 60px;
width: 68px;
height: 68px;
}
.icon_background_champions_colosseum {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_champions_colosseum.png');
@@ -2671,6 +2718,11 @@
width: 68px;
height: 68px;
}
.icon_background_container_garden {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_container_garden.png');
width: 68px;
height: 68px;
}
.icon_background_coral_reef {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_coral_reef.png');
width: 68px;
@@ -2688,8 +2740,8 @@
}
.icon_background_covered_bridge_in_autumn {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_covered_bridge_in_autumn.png');
width: 60px;
height: 60px;
width: 68px;
height: 68px;
}
.icon_background_cozy_barn {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_cozy_barn.png');
@@ -2708,13 +2760,13 @@
}
.icon_background_crater_lake {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_crater_lake.png');
width: 60px;
height: 60px;
width: 68px;
height: 68px;
}
.icon_background_creepy_castle {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_creepy_castle.png');
width: 60px;
height: 60px;
width: 68px;
height: 68px;
}
.icon_background_crescent_moon {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_crescent_moon.png');
@@ -2791,6 +2843,11 @@
width: 68px;
height: 68px;
}
.icon_background_dog_park {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_dog_park.png');
width: 68px;
height: 68px;
}
.icon_background_dojo {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_dojo.png');
width: 68px;
@@ -2923,6 +2980,17 @@
width: 60px;
height: 60px;
}
.icon_background_flowering_forest {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_flowering_forest.png');
width: 68px;
height: 68px;
}
.customize-option.icon_background_flowering_forest {
background-position: -25px -15px;
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_flowering_forest.png');
width: 60px;
height: 60px;
}
.icon_background_flowering_prairie {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_flowering_prairie.png');
width: 68px;
@@ -2985,8 +3053,8 @@
width: 68px;
height: 68px;
}
.icon_background_flying_over_the_ocean {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_flying_over_the_ocean.png');
.icon_background_flying_over_tropical_islands {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_flying_over_tropical_islands.png');
width: 68px;
height: 68px;
}
@@ -3000,6 +3068,11 @@
width: 68px;
height: 68px;
}
.icon_background_forest_sunset {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_forest_sunset.png');
width: 68px;
height: 68px;
}
.icon_background_forested_lakeshore {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_forested_lakeshore.png');
width: 68px;
@@ -3635,6 +3708,11 @@
width: 68px;
height: 68px;
}
.icon_background_rainy_rainforest {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_rainy_rainforest.png');
width: 68px;
height: 68px;
}
.icon_background_red {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_red.png');
width: 68px;
@@ -3652,8 +3730,8 @@
}
.icon_background_rime_ice {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_rime_ice.png');
width: 60px;
height: 60px;
width: 68px;
height: 68px;
}
.icon_background_river_of_lava {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_river_of_lava.png');
@@ -4090,6 +4168,17 @@
width: 68px;
height: 68px;
}
.icon_background_wall_flowering_vines {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_wall_flowering_vines.png');
width: 68px;
height: 68px;
}
.customize-option.icon_background_wall_flowering_vines {
background-position: -25px -15px;
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_wall_flowering_vines.png');
width: 60px;
height: 60px;
}
.icon_background_water_mill {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_water_mill.png');
width: 68px;
@@ -18925,6 +19014,11 @@
width: 114px;
height: 90px;
}
.broad_armor_armoire_hattersSuit {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_armoire_hattersSuit.png');
width: 114px;
height: 90px;
}
.broad_armor_armoire_heraldsTunic {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_armoire_heraldsTunic.png');
width: 114px;
@@ -19120,6 +19214,11 @@
width: 117px;
height: 120px;
}
.broad_armor_armoire_smileyShirt {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_armoire_smileyShirt.png');
width: 114px;
height: 90px;
}
.broad_armor_armoire_softBlackSuit {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_armoire_softBlackSuit.png');
width: 114px;
@@ -19235,6 +19334,11 @@
width: 90px;
height: 90px;
}
.eyewear_armoire_roseColoredGlasses {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/eyewear_armoire_roseColoredGlasses.png');
width: 114px;
height: 90px;
}
.eyewear_armoire_tragedyMask {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/eyewear_armoire_tragedyMask.png');
width: 114px;
@@ -19460,6 +19564,11 @@
width: 114px;
height: 87px;
}
.head_armoire_hattersTopHat {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/head_armoire_hattersTopHat.png');
width: 114px;
height: 90px;
}
.head_armoire_heraldsCap {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/head_armoire_heraldsCap.png');
width: 114px;
@@ -19840,6 +19949,16 @@
width: 90px;
height: 90px;
}
.shield_armoire_happyThoughts {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shield_armoire_happyThoughts.png');
width: 114px;
height: 90px;
}
.shield_armoire_hattersPocketWatch {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shield_armoire_hattersPocketWatch.png');
width: 114px;
height: 90px;
}
.shield_armoire_heraldsMessageScroll {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shield_armoire_heraldsMessageScroll.png');
width: 114px;
@@ -20295,6 +20414,11 @@
width: 68px;
height: 68px;
}
.shop_armor_armoire_hattersSuit {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_armor_armoire_hattersSuit.png');
width: 68px;
height: 68px;
}
.shop_armor_armoire_heraldsTunic {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_armor_armoire_heraldsTunic.png');
width: 68px;
@@ -20490,6 +20614,11 @@
width: 68px;
height: 68px;
}
.shop_armor_armoire_smileyShirt {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_armor_armoire_smileyShirt.png');
width: 68px;
height: 68px;
}
.shop_armor_armoire_softBlackSuit {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_armor_armoire_softBlackSuit.png');
width: 68px;
@@ -20665,6 +20794,11 @@
width: 68px;
height: 68px;
}
.shop_eyewear_armoire_roseColoredGlasses {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_eyewear_armoire_roseColoredGlasses.png');
width: 68px;
height: 68px;
}
.shop_eyewear_armoire_tragedyMask {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_eyewear_armoire_tragedyMask.png');
width: 68px;
@@ -20890,6 +21024,11 @@
width: 68px;
height: 68px;
}
.shop_head_armoire_hattersTopHat {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_head_armoire_hattersTopHat.png');
width: 68px;
height: 68px;
}
.shop_head_armoire_heraldsCap {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_head_armoire_heraldsCap.png');
width: 68px;
@@ -21270,6 +21409,16 @@
width: 68px;
height: 68px;
}
.shop_shield_armoire_happyThoughts {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_shield_armoire_happyThoughts.png');
width: 68px;
height: 68px;
}
.shop_shield_armoire_hattersPocketWatch {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_shield_armoire_hattersPocketWatch.png');
width: 68px;
height: 68px;
}
.shop_shield_armoire_heraldsMessageScroll {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_shield_armoire_heraldsMessageScroll.png');
width: 68px;
@@ -21715,6 +21864,11 @@
width: 68px;
height: 68px;
}
.shop_weapon_armoire_hattersShears {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_weapon_armoire_hattersShears.png');
width: 68px;
height: 68px;
}
.shop_weapon_armoire_heraldsBuisine {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_weapon_armoire_heraldsBuisine.png');
width: 68px;
@@ -21820,6 +21974,11 @@
width: 68px;
height: 68px;
}
.shop_weapon_armoire_optimistsClover {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_weapon_armoire_optimistsClover.png');
width: 68px;
height: 68px;
}
.shop_weapon_armoire_orangeKite {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_weapon_armoire_orangeKite.png');
width: 68px;
@@ -22215,6 +22374,11 @@
width: 114px;
height: 90px;
}
.slim_armor_armoire_hattersSuit {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/slim_armor_armoire_hattersSuit.png');
width: 114px;
height: 90px;
}
.slim_armor_armoire_heraldsTunic {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/slim_armor_armoire_heraldsTunic.png');
width: 114px;
@@ -22410,6 +22574,11 @@
width: 117px;
height: 120px;
}
.slim_armor_armoire_smileyShirt {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/slim_armor_armoire_smileyShirt.png');
width: 114px;
height: 90px;
}
.slim_armor_armoire_softBlackSuit {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/slim_armor_armoire_softBlackSuit.png');
width: 114px;
@@ -22700,6 +22869,11 @@
width: 114px;
height: 90px;
}
.weapon_armoire_hattersShears {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/weapon_armoire_hattersShears.png');
width: 114px;
height: 90px;
}
.weapon_armoire_heraldsBuisine {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/weapon_armoire_heraldsBuisine.png');
width: 114px;
@@ -22805,6 +22979,11 @@
width: 90px;
height: 90px;
}
.weapon_armoire_optimistsClover {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/weapon_armoire_optimistsClover.png');
width: 114px;
height: 90px;
}
.weapon_armoire_orangeKite {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/weapon_armoire_orangeKite.png');
width: 114px;
@@ -29115,6 +29294,56 @@
width: 68px;
height: 68px;
}
.head_mystery_202403 {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/head_mystery_202403.png');
width: 114px;
height: 90px;
}
.shop_head_mystery_202403 {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_head_mystery_202403.png');
width: 68px;
height: 68px;
}
.shop_set_mystery_202403 {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_set_mystery_202403.png');
width: 68px;
height: 68px;
}
.shop_weapon_mystery_202403 {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_weapon_mystery_202403.png');
width: 68px;
height: 68px;
}
.weapon_mystery_202403 {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/weapon_mystery_202403.png');
width: 114px;
height: 90px;
}
.head_mystery_202404 {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/head_mystery_202404.png');
width: 114px;
height: 90px;
}
.shop_head_mystery_202404 {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_head_mystery_202404.png');
width: 68px;
height: 68px;
}
.shop_set_mystery_202404 {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_set_mystery_202404.png');
width: 68px;
height: 68px;
}
.shop_weapon_mystery_202404 {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_weapon_mystery_202404.png');
width: 68px;
height: 68px;
}
.weapon_mystery_202404 {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/weapon_mystery_202404.png');
width: 114px;
height: 90px;
}
.broad_armor_mystery_301404 {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_mystery_301404.png');
width: 90px;
@@ -29490,6 +29719,26 @@
width: 117px;
height: 120px;
}
.broad_armor_special_spring2024Healer {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_special_spring2024Healer.png');
width: 114px;
height: 90px;
}
.broad_armor_special_spring2024Mage {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_special_spring2024Mage.png');
width: 114px;
height: 90px;
}
.broad_armor_special_spring2024Rogue {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_special_spring2024Rogue.png');
width: 114px;
height: 90px;
}
.broad_armor_special_spring2024Warrior {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_special_spring2024Warrior.png');
width: 114px;
height: 90px;
}
.broad_armor_special_springHealer {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_special_springHealer.png');
width: 90px;
@@ -29770,6 +30019,26 @@
width: 117px;
height: 120px;
}
.head_special_spring2024Healer {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/head_special_spring2024Healer.png');
width: 114px;
height: 90px;
}
.head_special_spring2024Mage {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/head_special_spring2024Mage.png');
width: 114px;
height: 90px;
}
.head_special_spring2024Rogue {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/head_special_spring2024Rogue.png');
width: 114px;
height: 90px;
}
.head_special_spring2024Warrior {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/head_special_spring2024Warrior.png');
width: 114px;
height: 90px;
}
.head_special_springHealer {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/head_special_springHealer.png');
width: 90px;
@@ -29925,6 +30194,21 @@
width: 117px;
height: 120px;
}
.shield_special_spring2024Healer {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shield_special_spring2024Healer.png');
width: 114px;
height: 90px;
}
.shield_special_spring2024Rogue {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shield_special_spring2024Rogue.png');
width: 114px;
height: 90px;
}
.shield_special_spring2024Warrior {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shield_special_spring2024Warrior.png');
width: 114px;
height: 90px;
}
.shield_special_springHealer {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shield_special_springHealer.png');
width: 90px;
@@ -30120,6 +30404,26 @@
width: 68px;
height: 68px;
}
.shop_armor_special_spring2024Healer {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_armor_special_spring2024Healer.png');
width: 68px;
height: 68px;
}
.shop_armor_special_spring2024Mage {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_armor_special_spring2024Mage.png');
width: 68px;
height: 68px;
}
.shop_armor_special_spring2024Rogue {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_armor_special_spring2024Rogue.png');
width: 68px;
height: 68px;
}
.shop_armor_special_spring2024Warrior {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_armor_special_spring2024Warrior.png');
width: 68px;
height: 68px;
}
.shop_armor_special_springHealer {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_armor_special_springHealer.png');
width: 68px;
@@ -30400,6 +30704,26 @@
width: 68px;
height: 68px;
}
.shop_head_special_spring2024Healer {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_head_special_spring2024Healer.png');
width: 68px;
height: 68px;
}
.shop_head_special_spring2024Mage {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_head_special_spring2024Mage.png');
width: 68px;
height: 68px;
}
.shop_head_special_spring2024Rogue {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_head_special_spring2024Rogue.png');
width: 68px;
height: 68px;
}
.shop_head_special_spring2024Warrior {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_head_special_spring2024Warrior.png');
width: 68px;
height: 68px;
}
.shop_head_special_springHealer {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_head_special_springHealer.png');
width: 68px;
@@ -30555,6 +30879,21 @@
width: 68px;
height: 68px;
}
.shop_shield_special_spring2024Healer {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_shield_special_spring2024Healer.png');
width: 68px;
height: 68px;
}
.shop_shield_special_spring2024Rogue {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_shield_special_spring2024Rogue.png');
width: 68px;
height: 68px;
}
.shop_shield_special_spring2024Warrior {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_shield_special_spring2024Warrior.png');
width: 68px;
height: 68px;
}
.shop_shield_special_springHealer {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_shield_special_springHealer.png');
width: 68px;
@@ -30750,6 +31089,26 @@
width: 68px;
height: 68px;
}
.shop_weapon_special_spring2024Healer {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_weapon_special_spring2024Healer.png');
width: 68px;
height: 68px;
}
.shop_weapon_special_spring2024Mage {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_weapon_special_spring2024Mage.png');
width: 68px;
height: 68px;
}
.shop_weapon_special_spring2024Rogue {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_weapon_special_spring2024Rogue.png');
width: 68px;
height: 68px;
}
.shop_weapon_special_spring2024Warrior {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_weapon_special_spring2024Warrior.png');
width: 68px;
height: 68px;
}
.shop_weapon_special_springHealer {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_weapon_special_springHealer.png');
width: 68px;
@@ -30950,6 +31309,26 @@
width: 117px;
height: 120px;
}
.slim_armor_special_spring2024Healer {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/slim_armor_special_spring2024Healer.png');
width: 114px;
height: 90px;
}
.slim_armor_special_spring2024Mage {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/slim_armor_special_spring2024Mage.png');
width: 114px;
height: 90px;
}
.slim_armor_special_spring2024Rogue {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/slim_armor_special_spring2024Rogue.png');
width: 114px;
height: 90px;
}
.slim_armor_special_spring2024Warrior {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/slim_armor_special_spring2024Warrior.png');
width: 114px;
height: 90px;
}
.slim_armor_special_springHealer {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/slim_armor_special_springHealer.png');
width: 90px;
@@ -31150,6 +31529,26 @@
width: 117px;
height: 120px;
}
.weapon_special_spring2024Healer {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/weapon_special_spring2024Healer.png');
width: 114px;
height: 90px;
}
.weapon_special_spring2024Mage {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/weapon_special_spring2024Mage.png');
width: 114px;
height: 90px;
}
.weapon_special_spring2024Rogue {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/weapon_special_spring2024Rogue.png');
width: 114px;
height: 90px;
}
.weapon_special_spring2024Warrior {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/weapon_special_spring2024Warrior.png');
width: 114px;
height: 90px;
}
.weapon_special_springHealer {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/weapon_special_springHealer.png');
width: 90px;
@@ -37288,6 +37687,11 @@
width: 221px;
height: 213px;
}
.quest_fungi {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/quest_fungi.png');
width: 219px;
height: 219px;
}
.quest_ghost_stag {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/quest_ghost_stag.png');
width: 219px;
@@ -37993,6 +38397,11 @@
width: 68px;
height: 68px;
}
.inventory_quest_scroll_fungi {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/inventory_quest_scroll_fungi.png');
width: 68px;
height: 68px;
}
.inventory_quest_scroll_ghost_stag {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/inventory_quest_scroll_ghost_stag.png');
width: 68px;
@@ -55153,6 +55562,11 @@
width: 81px;
height: 99px;
}
.Pet-BearCub-Fungi {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-BearCub-Fungi.png');
width: 81px;
height: 99px;
}
.Pet-BearCub-Ghost {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-BearCub-Ghost.png');
width: 81px;
@@ -55608,6 +56022,11 @@
width: 81px;
height: 99px;
}
.Pet-Cactus-Fungi {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-Cactus-Fungi.png');
width: 81px;
height: 99px;
}
.Pet-Cactus-Ghost {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-Cactus-Ghost.png');
width: 81px;
@@ -56158,6 +56577,11 @@
width: 81px;
height: 99px;
}
.Pet-Dragon-Fungi {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-Dragon-Fungi.png');
width: 81px;
height: 99px;
}
.Pet-Dragon-Ghost {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-Dragon-Ghost.png');
width: 81px;
@@ -56618,6 +57042,11 @@
width: 81px;
height: 99px;
}
.Pet-FlyingPig-Fungi {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-FlyingPig-Fungi.png');
width: 81px;
height: 99px;
}
.Pet-FlyingPig-Ghost {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-FlyingPig-Ghost.png');
width: 81px;
@@ -56918,6 +57347,11 @@
width: 81px;
height: 99px;
}
.Pet-Fox-Fungi {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-Fox-Fungi.png');
width: 81px;
height: 99px;
}
.Pet-Fox-Ghost {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-Fox-Ghost.png');
width: 81px;
@@ -57613,6 +58047,11 @@
width: 81px;
height: 99px;
}
.Pet-LionCub-Fungi {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-LionCub-Fungi.png');
width: 81px;
height: 99px;
}
.Pet-LionCub-Ghost {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-LionCub-Ghost.png');
width: 81px;
@@ -58133,6 +58572,11 @@
width: 81px;
height: 99px;
}
.Pet-PandaCub-Fungi {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-PandaCub-Fungi.png');
width: 81px;
height: 99px;
}
.Pet-PandaCub-Ghost {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-PandaCub-Ghost.png');
width: 81px;
@@ -59393,6 +59837,11 @@
width: 81px;
height: 99px;
}
.Pet-TigerCub-Fungi {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-TigerCub-Fungi.png');
width: 81px;
height: 99px;
}
.Pet-TigerCub-Ghost {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-TigerCub-Ghost.png');
width: 81px;
@@ -60008,6 +60457,11 @@
width: 81px;
height: 99px;
}
.Pet-Wolf-Fungi {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-Wolf-Fungi.png');
width: 81px;
height: 99px;
}
.Pet-Wolf-Ghost {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-Wolf-Ghost.png');
width: 81px;
@@ -60363,6 +60817,11 @@
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Fungi {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet_HatchingPotion_Fungi.png');
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Ghost {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet_HatchingPotion_Ghost.png');
width: 68px;

View File

@@ -1,4 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" width="386" height="200" viewBox="0 0 386 200">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 386 200">
<g fill="none" fill-rule="evenodd">
<g fill="#34313A" opacity=".12">
<path d="M10.811 125.405h86.486v10.811H10.811z"/>

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 35 KiB

View File

@@ -1,4 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" width="1440" height="480" viewBox="0 0 1440 480">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1440 480">
<g fill="none" fill-rule="nonzero">
<path fill="#FEFEFE" d="M1002.873 423.48c98.309-13.08 200.935-19.32 301.582-11.64 46.05 3.42 91.473 9.96 135.545 20.04V480H681.054c104.245-19.92 207.59-40.86 312.645-55.32 3.058-.42 6.116-.78 9.174-1.2z"/>
<path fill="#FDFDFD" d="M.9 0H1440v431.88c-44.072-10.08-89.494-16.68-135.545-20.1-100.647-7.62-203.273-1.44-301.582 11.64-3.058.42-6.116.84-9.174 1.2-105.054 14.4-208.4 35.4-312.645 55.32H.9V0z"/>

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

View File

@@ -1,3 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="92" height="24" viewBox="0 0 92 24">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 92 24">
<path fill="#D5C8FF" fill-rule="evenodd" d="M46.237 7.124c0 .2-1.6 4.43-1.69 4.464-.042.016-.355-.103-.694-.266-.707-.34-1.37-.505-2.014-.504-.802.002-1.698.297-2.052.677-.151.162-.152.172-.19 2.595-.037 2.4.043 5.327.178 6.504.115 1.003.382 1.496.932 1.726.184.077 1.345.236 1.725.237.028 0 .043.23.033.51l-.02.512-4.88.016c-2.685.008-4.92-.009-4.966-.04-.06-.037-.08-.19-.066-.51l.02-.455.23-.05c.127-.026.4-.08.606-.119.639-.119 1.006-.465 1.212-1.144.169-.553.243-2.323.246-5.876.005-4.345-.085-5.372-.525-5.953-.238-.316-.41-.405-.987-.516a70.373 70.373 0 0 1-.667-.13c-.132-.028-.149-.071-.149-.395 0-.314.02-.37.149-.423.197-.082 6.73-1.388 6.94-1.388h.162l-.032.973a295.85 295.85 0 0 1-.062 1.731l-.03.759.236-.427C40.64 8.266 41.49 7.417 42.62 6.9c.62-.285 1.034-.37 1.8-.37.909 0 1.817.297 1.817.594zm-27.433-.08l-.47.143c-.705.215-.701.217-1.019-.623-.78-2.065-1.675-3.255-2.9-3.856-.844-.414-1.234-.464-3.62-.464H8.72l-.035.346c-.068.65-.174 4.826-.173 6.793l.001 1.962.61-.003c.336-.002.997-.027 1.47-.055.711-.043.923-.08 1.22-.218.732-.339 1.229-1.084 1.534-2.297l.157-.626.538-.019.538-.02v7.926l-.538-.02-.538-.018-.153-.627c-.288-1.177-.84-2.02-1.523-2.322-.316-.14-1.096-.219-2.606-.265l-.709-.021v1.488c0 1.622.09 3.817.203 5.008.16 1.66.584 2.578 1.346 2.91.146.063.606.166 1.023.229.417.062.81.14.874.173.16.083.17.943.011 1.004-.125.048-11.764.044-11.882-.004-.055-.022-.083-.186-.083-.49 0-.547-.035-.522 1.022-.719.811-.15 1.101-.304 1.46-.773.693-.91.843-2.663.845-9.878.002-6.776-.13-8.202-.847-9.25-.319-.464-.855-.716-1.754-.824l-.693-.083-.019-.54L0 .47.217.431c.12-.02 4.312-.03 9.316-.02l9.1.02.043.263c.023.145.062 1.633.085 3.307l.043 3.044zM91.73 18.624c-.028.831-.054 1.002-.243 1.56-.617 1.819-2.008 3.016-4.158 3.578-.728.19-.832.2-2.28.215-.833.01-1.635.004-1.78-.011-1.175-.126-3.045-.536-3.667-.803l-.305-.13-.041-1.508c-.023-.828-.05-1.936-.058-2.462l-.017-.955.182-.088c.1-.048.302-.093.45-.1l.267-.012.227.56c.889 2.188 1.931 3.367 3.292 3.726.52.136 1.493.138 1.877.002 1.077-.38 1.668-1.196 1.673-2.31.006-1.318-.72-1.952-3.458-3.022-1.697-.663-2.29-1.004-2.994-1.725-.76-.779-1.125-1.664-1.194-2.898-.083-1.491.384-2.748 1.418-3.82 1.04-1.077 2.391-1.661 4.232-1.83 1.62-.147 4.107.197 5.41.749l.238.1.043 1.343c.023.739.047 1.729.053 2.2l.012.858-.32.118c-.504.188-.538.164-.819-.58-.787-2.086-1.701-3.072-3.126-3.374-.869-.184-1.594.014-2.122.578-.41.44-.571.83-.61 1.486-.043.71.085 1.094.519 1.57.535.585 1.411 1.09 3.158 1.82 2.139.894 3.16 1.653 3.714 2.762.36.72.463 1.296.427 2.403zm-18.987-5.341c-1.377.077-4.333.115-4.37.057-.049-.08.074-1.254.196-1.862.294-1.466.764-2.524 1.41-3.176.348-.35.507-.46.79-.544.196-.058.417-.105.492-.105.303 0 .66.155.926.4.713.658 1.121 2.07 1.202 4.16l.04 1.032-.686.038zm5.483-.057c-.305-2.964-1.505-5.005-3.544-6.027-1.811-.907-4.61-.842-6.656.156-1.94.945-3.274 2.523-4.019 4.748-.388 1.16-.51 2.093-.471 3.596.025.95.068 1.441.166 1.88.765 3.412 3.105 5.733 6.377 6.323.72.13 2.356.133 3.084.005 1.04-.182 2.238-.644 2.994-1.155.923-.623 1.87-1.56 1.87-1.85 0-.178-.318-.587-.456-.587-.06 0-.316.134-.57.298-.902.583-1.765.823-2.965.823-1.655 0-2.705-.413-3.76-1.478-.466-.471-.658-.725-.9-1.192-.531-1.028-.818-2.21-.861-3.545l-.019-.577 4.88-.017 4.881-.016.022-.33a8.664 8.664 0 0 0-.053-1.055zM57.164 17.31c-.303 1.922-.855 3.405-1.623 4.363-.372.464-.99.904-1.474 1.047-.312.093-.98.115-1.576.052-.133-.014-.276-.066-.317-.115-.113-.137-.235-9.09-.16-11.709l.06-2.077.528-.152c.778-.225 1.616-.19 2.21.092 1.193.565 1.977 1.962 2.384 4.248.133.744.113 3.33-.032 4.251zm4.914-4.812C61.421 9.488 59.541 7.41 57 6.883c-.388-.08-.74-.097-1.496-.07-1.138.039-1.921.21-2.771.602-.282.13-.528.237-.547.237-.019 0-.016-1.722.006-3.825C52.224.862 52.215 0 52.154 0c-.215-.004-6.95 1.281-7.024 1.34-.056.044-.079.186-.066.402.022.375-.023.345.798.53.247.055.536.162.643.238.274.195.502.618.66 1.223.124.478.141.82.199 4.05.058 3.299.047 6.69-.044 12.902l-.038 2.58.484.11c.698.16 2.697.492 3.352.558.96.098 3.197.084 3.909-.023 3.093-.466 5.424-2.26 6.51-5.01.289-.729.566-1.852.663-2.685.113-.978.05-2.93-.122-3.716zM27.57 17.4c-.217 3.078-.885 4.747-2.131 5.327-.452.21-1.25.222-1.687.024-1.084-.492-1.852-1.986-2.237-4.35-.244-1.498-.267-4.83-.045-6.462.313-2.293.972-3.648 2-4.105.704-.314 1.68-.129 2.307.438 1.393 1.26 2.097 4.84 1.793 9.128zm4.956-3.515c-.345-2.926-1.586-5.069-3.634-6.274-2.276-1.34-5.735-1.417-8.192-.184-1.774.89-3.224 2.607-3.868 4.578-.665 2.033-.664 4.703 0 6.779.426 1.33 1.004 2.3 1.895 3.182 1.068 1.059 2.467 1.735 4.066 1.968.573.084 2.379.085 2.97.003.28-.039.765-.145 1.077-.235 2.9-.84 4.878-3.067 5.557-6.256.166-.78.235-2.667.13-3.56z"/>
</svg>

Before

Width:  |  Height:  |  Size: 4.7 KiB

After

Width:  |  Height:  |  Size: 4.6 KiB

View File

@@ -1,4 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" width="135" height="40" viewBox="0 0 135 40">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 135 40">
<g fill="none" fill-rule="nonzero">
<path fill="#36205D" d="M130 40H5c-2.8 0-5-2.2-5-5V5c0-2.8 2.2-5 5-5h125c2.8 0 5 2.2 5 5v30c0 2.7-2.2 5-5 5z"/>
<path fill="#BDA8FF" d="M130 .8c2.3 0 4.2 1.9 4.2 4.2v30c0 2.3-1.9 4.2-4.2 4.2H5C2.7 39.2.8 37.3.8 35V5C.8 2.7 2.7.8 5 .8h125zm0-.8H5C2.2 0 0 2.2 0 5v30c0 2.8 2.2 5 5 5h125c2.8 0 5-2.2 5-5V5c0-2.7-2.2-5-5-5z"/>

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 3.8 KiB

View File

@@ -1,4 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" width="135" height="40" viewBox="0 0 135 40">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 135 40">
<g fill="none" fill-rule="nonzero">
<path fill="#BDA8FF" d="M130.197 40H4.729A4.74 4.74 0 0 1 0 35.267V4.726A4.733 4.733 0 0 1 4.729 0h125.468C132.803 0 135 2.12 135 4.726v30.541c0 2.605-2.197 4.733-4.803 4.733z"/>
<path fill="#36205D" d="M134.032 35.268a3.83 3.83 0 0 1-3.834 3.83H4.729a3.835 3.835 0 0 1-3.839-3.83V4.725A3.84 3.84 0 0 1 4.729.89h125.468a3.834 3.834 0 0 1 3.834 3.835l.001 30.543z"/>

Before

Width:  |  Height:  |  Size: 9.0 KiB

After

Width:  |  Height:  |  Size: 9.0 KiB

View File

@@ -1,20 +1,20 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="444" height="528" viewBox="0 0 444 528">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 444 528">
<defs>
<linearGradient id="b" x1="100%" x2="0%" y1="100%" y2="0%">
<stop offset="0%" stop-color="#4F2A93"/>
<stop offset="100%" stop-color="#6133B4"/>
</linearGradient>
<rect id="a" width="216" height="384" rx="2"/>
<rect id="a" rx="2"/>
<path id="c" d="M236.147 458.522c0 .69-.558 1.249-1.246 1.249H13.769a1.247 1.247 0 0 1-1.246-1.25V63.268c0-.69.557-1.249 1.246-1.249H234.9c.688 0 1.246.56 1.246 1.25v395.254z"/>
</defs>
<g fill="none" fill-rule="evenodd">
<g transform="translate(196 24)">
<rect width="243.6" height="480" fill="#D5C8FF" stroke="#9A62FF" stroke-width="8" rx="16"/>
<rect fill="#D5C8FF" stroke="#9A62FF" stroke-width="8" rx="16"/>
<path fill="#9A62FF" d="M166.8 24a4.805 4.805 0 0 0-4.8 4.8c0 2.647 2.153 4.8 4.8 4.8s4.8-2.153 4.8-4.8-2.153-4.8-4.8-4.8m0 2.743a2.057 2.057 0 1 1 0 4.114 2.057 2.057 0 0 1 0-4.114"/>
<rect width="218.4" height="386.4" x="12.6" y="46.8" fill="#4F2A93" rx="2"/>
<rect width="42" height="4.8" x="100.8" y="14.4" fill="#9A62FF" rx="2.4"/>
<rect width="18" height="8.4" x="72" y="24.6" fill="#9A62FF" rx="4.2"/>
<rect width="42" height="4.8" x="100.8" y="460.8" fill="#9A62FF" rx="2.4"/>
<rect x="12.6" y="46.8" fill="#4F2A93" rx="2"/>
<rect x="100.8" y="14.4" fill="#9A62FF" rx="2.4"/>
<rect x="72" y="24.6" fill="#9A62FF" rx="4.2"/>
<rect x="100.8" y="460.8" fill="#9A62FF" rx="2.4"/>
</g>
<use fill="url(#b)" transform="translate(209.8 72)" xlink:href="#a"/>
<g fill="#FFF">

Before

Width:  |  Height:  |  Size: 6.1 KiB

After

Width:  |  Height:  |  Size: 6.0 KiB

Some files were not shown because too many files have changed in this diff Show More