Compare commits

...

677 Commits

Author SHA1 Message Date
Sabe Jones 8702a28bcc 4.105.4 2019-08-01 18:09:16 -05:00
Sabe Jones 90e89791f3 chore(event): end Summer Splash 2019-08-01 18:08:43 -05:00
Sabe Jones 20298d3dd5 Merge branch 'release' into develop 2019-07-31 13:14:34 -05:00
Sabe Jones 2bfc41b1c3 4.105.3 2019-07-31 13:13:50 -05:00
Sabe Jones 016c8307df chore(event): Naming Day 2019 2019-07-31 13:13:27 -05:00
greenkeeper[bot] 6ec8afeb84 Update chromedriver to the latest version 🚀 (#11292)
* chore(package): update chromedriver to version 76.0.0

* chore(package): update lockfile package-lock.json
2019-07-31 16:14:39 +02:00
Sabe Jones 0396114665 4.105.2 2019-07-30 14:14:51 -05:00
Sabe Jones 24e0462d1a Merge remote-tracking branch 'gryphonbot/weblate-habitica-settings' into release 2019-07-30 14:14:33 -05:00
Melior f1d0809d2d Update from Weblate (#11288)
* Translated using Weblate (Polish)

Currently translated at 100.0% (424 of 424 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/pl/

* Translated using Weblate (Polish)

Currently translated at 100.0% (137 of 137 strings)

Translation: Habitica/Challenge
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/pl/

* Translated using Weblate (Polish)

Currently translated at 90.3% (308 of 341 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/pl/

* Translated using Weblate (Polish)

Currently translated at 99.6% (636 of 638 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/pl/

* Translated using Weblate (Polish)

Currently translated at 100.0% (293 of 293 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/pl/

* Translated using Weblate (Polish)

Currently translated at 100.0% (333 of 333 strings)

Translation: Habitica/Front
Translate-URL: https://translate.habitica.com/projects/habitica/front/pl/

* Translated using Weblate (Polish)

Currently translated at 99.3% (1755 of 1767 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/pl/

* Translated using Weblate (Polish)

Currently translated at 100.0% (66 of 66 strings)

Translation: Habitica/Messages
Translate-URL: https://translate.habitica.com/projects/habitica/messages/pl/

* Translated using Weblate (Polish)

Currently translated at 100.0% (157 of 157 strings)

Translation: Habitica/Limited
Translate-URL: https://translate.habitica.com/projects/habitica/limited/pl/

* Translated using Weblate (Polish)

Currently translated at 100.0% (170 of 170 strings)

Translation: Habitica/Npc
Translate-URL: https://translate.habitica.com/projects/habitica/npc/pl/

* Translated using Weblate (Polish)

Currently translated at 100.0% (57 of 57 strings)

Translation: Habitica/Spells
Translate-URL: https://translate.habitica.com/projects/habitica/spells/pl/

* Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (431 of 431 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/pt_BR/

* Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (341 of 341 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/pt_BR/

* Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (1809 of 1809 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/pt_BR/

* Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (482 of 482 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/pt_BR/

* Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (157 of 157 strings)

Translation: Habitica/Limited
Translate-URL: https://translate.habitica.com/projects/habitica/limited/pt_BR/

* Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (170 of 170 strings)

Translation: Habitica/Npc
Translate-URL: https://translate.habitica.com/projects/habitica/npc/pt_BR/

* Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (146 of 146 strings)

Translation: Habitica/Pets
Translate-URL: https://translate.habitica.com/projects/habitica/pets/pt_BR/

* Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (218 of 218 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/pt_BR/

* Translated using Weblate (Spanish)

Currently translated at 99.1% (478 of 482 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/es/

* Translated using Weblate (German)

Currently translated at 98.8% (337 of 341 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/de/

* Translated using Weblate (German)

Currently translated at 100.0% (341 of 341 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/de/

* Translated using Weblate (German)

Currently translated at 100.0% (341 of 341 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/de/

* Translated using Weblate (Chinese (Simplified))

Currently translated at 99.9% (1766 of 1767 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/zh_Hans/

* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (226 of 226 strings)

Translation: Habitica/Character
Translate-URL: https://translate.habitica.com/projects/habitica/character/zh_Hans/

* Translated using Weblate (Russian)

Currently translated at 99.3% (1755 of 1767 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/ru/

* Translated using Weblate (German)

Currently translated at 100.0% (424 of 424 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/de/

* Translated using Weblate (German)

Currently translated at 100.0% (424 of 424 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/de/

* Translated using Weblate (German)

Currently translated at 100.0% (424 of 424 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/de/

* Translated using Weblate (Russian)

Currently translated at 96.4% (329 of 341 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/ru/

* Translated using Weblate (Russian)

Currently translated at 96.4% (329 of 341 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/ru/

* Translated using Weblate (Russian)

Currently translated at 96.4% (329 of 341 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/ru/

* Translated using Weblate (Chinese (Simplified))

Currently translated at 98.5% (629 of 638 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/zh_Hans/

* Translated using Weblate (Polish)

Currently translated at 99.4% (1758 of 1767 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/pl/

* Translated using Weblate (Polish)

Currently translated at 91.4% (312 of 341 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/pl/

* Translated using Weblate (Polish)

Currently translated at 91.4% (312 of 341 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/pl/

* Translated using Weblate (Japanese)

Currently translated at 99.4% (339 of 341 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/ja/

* Translated using Weblate (Japanese)

Currently translated at 99.4% (339 of 341 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/ja/

* Translated using Weblate (Russian)

Currently translated at 99.1% (338 of 341 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/ru/

* Translated using Weblate (Spanish)

Currently translated at 99.8% (1765 of 1767 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/es/

* Translated using Weblate (Spanish)

Currently translated at 99.8% (1765 of 1767 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/es/

* Translated using Weblate (English (United Kingdom))

Currently translated at 99.7% (340 of 341 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/en_GB/

* Translated using Weblate (Spanish)

Currently translated at 100.0% (431 of 431 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/es/

* Translated using Weblate (Spanish)

Currently translated at 100.0% (431 of 431 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/es/

* Translated using Weblate (Spanish)

Currently translated at 100.0% (333 of 333 strings)

Translation: Habitica/Front
Translate-URL: https://translate.habitica.com/projects/habitica/front/es/

* Translated using Weblate (Chinese (Traditional))

Currently translated at 95.3% (325 of 341 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/zh_Hant/

* Translated using Weblate (Chinese (Traditional))

Currently translated at 95.3% (325 of 341 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/zh_Hant/

* Translated using Weblate (Chinese (Traditional))

Currently translated at 96.1% (328 of 341 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/zh_Hant/

* Translated using Weblate (Chinese (Traditional))

Currently translated at 96.4% (329 of 341 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/zh_Hant/

* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (424 of 424 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/zh_Hans/

* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (424 of 424 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/zh_Hans/

* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (137 of 137 strings)

Translation: Habitica/Challenge
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/zh_Hans/

* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (226 of 226 strings)

Translation: Habitica/Character
Translate-URL: https://translate.habitica.com/projects/habitica/character/zh_Hans/

* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (78 of 78 strings)

Translation: Habitica/Contrib
Translate-URL: https://translate.habitica.com/projects/habitica/contrib/zh_Hans/

* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (341 of 341 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/zh_Hans/

* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (126 of 126 strings)

Translation: Habitica/Communityguidelines
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/zh_Hans/

* Translated using Weblate (Chinese (Simplified))

Currently translated at 98.7% (630 of 638 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/zh_Hans/

* Translated using Weblate (Chinese (Simplified))

Currently translated at 98.7% (630 of 638 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/zh_Hans/

* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (293 of 293 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/zh_Hans/

* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (293 of 293 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/zh_Hans/

* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (1767 of 1767 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/zh_Hans/

* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (1767 of 1767 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/zh_Hans/

* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (482 of 482 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/zh_Hans/

* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (482 of 482 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/zh_Hans/

* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (153 of 153 strings)

Translation: Habitica/Limited
Translate-URL: https://translate.habitica.com/projects/habitica/limited/zh_Hans/

* Translated using Weblate (Chinese (Simplified))

Currently translated at 99.3% (145 of 146 strings)

Translation: Habitica/Pets
Translate-URL: https://translate.habitica.com/projects/habitica/pets/zh_Hans/

* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (211 of 211 strings)

Translation: Habitica/Tasks
Translate-URL: https://translate.habitica.com/projects/habitica/tasks/zh_Hans/

* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (36 of 36 strings)

Translation: Habitica/Loadingscreentips
Translate-URL: https://translate.habitica.com/projects/habitica/loadingscreentips/zh_Hans/

* Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (206 of 206 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/zh_Hant/

* Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (126 of 126 strings)

Translation: Habitica/Communityguidelines
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/zh_Hant/

* Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (26 of 26 strings)

Translation: Habitica/Defaulttasks
Translate-URL: https://translate.habitica.com/projects/habitica/defaulttasks/zh_Hant/

* Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (27 of 27 strings)

Translation: Habitica/Loginincentives
Translate-URL: https://translate.habitica.com/projects/habitica/loginincentives/zh_Hant/

* Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (31 of 31 strings)

Translation: Habitica/Maintenance
Translate-URL: https://translate.habitica.com/projects/habitica/maintenance/zh_Hant/

* Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (8 of 8 strings)

Translation: Habitica/Overview
Translate-URL: https://translate.habitica.com/projects/habitica/overview/zh_Hant/

* Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (170 of 170 strings)

Translation: Habitica/Npc
Translate-URL: https://translate.habitica.com/projects/habitica/npc/zh_Hant/

* Translated using Weblate (Danish)

Currently translated at 99.5% (205 of 206 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/da/

* Translated using Weblate (Danish)

Currently translated at 100.0% (226 of 226 strings)

Translation: Habitica/Character
Translate-URL: https://translate.habitica.com/projects/habitica/character/da/

* Translated using Weblate (Danish)

Currently translated at 100.0% (341 of 341 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/da/

* Translated using Weblate (Danish)

Currently translated at 100.0% (126 of 126 strings)

Translation: Habitica/Communityguidelines
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/da/

* Translated using Weblate (Danish)

Currently translated at 99.8% (637 of 638 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/da/

* Translated using Weblate (Danish)

Currently translated at 100.0% (56 of 56 strings)

Translation: Habitica/Faq
Translate-URL: https://translate.habitica.com/projects/habitica/faq/da/

* Translated using Weblate (Danish)

Currently translated at 100.0% (332 of 332 strings)

Translation: Habitica/Front
Translate-URL: https://translate.habitica.com/projects/habitica/front/da/

* Translated using Weblate (Danish)

Currently translated at 100.0% (293 of 293 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/da/

* Translated using Weblate (Danish)

Currently translated at 99.7% (1804 of 1809 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/da/

* Translated using Weblate (Danish)

Currently translated at 100.0% (6 of 6 strings)

Translation: Habitica/Inventory
Translate-URL: https://translate.habitica.com/projects/habitica/inventory/da/

* Translated using Weblate (Danish)

Currently translated at 99.7% (481 of 482 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/da/

* Translated using Weblate (Danish)

Currently translated at 100.0% (153 of 153 strings)

Translation: Habitica/Limited
Translate-URL: https://translate.habitica.com/projects/habitica/limited/da/

* Translated using Weblate (Danish)

Currently translated at 96.9% (64 of 66 strings)

Translation: Habitica/Messages
Translate-URL: https://translate.habitica.com/projects/habitica/messages/da/

* Translated using Weblate (Danish)

Currently translated at 97.6% (166 of 170 strings)

Translation: Habitica/Npc
Translate-URL: https://translate.habitica.com/projects/habitica/npc/da/

* Translated using Weblate (Danish)

Currently translated at 100.0% (8 of 8 strings)

Translation: Habitica/Overview
Translate-URL: https://translate.habitica.com/projects/habitica/overview/da/

* Translated using Weblate (Danish)

Currently translated at 99.3% (145 of 146 strings)

Translation: Habitica/Pets
Translate-URL: https://translate.habitica.com/projects/habitica/pets/da/

* Translated using Weblate (Danish)

Currently translated at 100.0% (128 of 128 strings)

Translation: Habitica/Quests
Translate-URL: https://translate.habitica.com/projects/habitica/quests/da/

* Translated using Weblate (Danish)

Currently translated at 100.0% (57 of 57 strings)

Translation: Habitica/Spells
Translate-URL: https://translate.habitica.com/projects/habitica/spells/da/

* Translated using Weblate (Danish)

Currently translated at 100.0% (36 of 36 strings)

Translation: Habitica/Loadingscreentips
Translate-URL: https://translate.habitica.com/projects/habitica/loadingscreentips/da/

* Translated using Weblate (Danish)

Currently translated at 99.0% (216 of 218 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/da/

* Translated using Weblate (English (Pirate))

Currently translated at 100.0% (638 of 638 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/en@pirate/

* Translated using Weblate (English (Pirate))

Currently translated at 100.0% (1767 of 1767 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/en@pirate/

* Translated using Weblate (English (Pirate))

Currently translated at 100.0% (1767 of 1767 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/en@pirate/

* Translated using Weblate (English (Pirate))

Currently translated at 100.0% (482 of 482 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/en@pirate/

* Translated using Weblate (English (Pirate))

Currently translated at 100.0% (146 of 146 strings)

Translation: Habitica/Pets
Translate-URL: https://translate.habitica.com/projects/habitica/pets/en@pirate/

* Translated using Weblate (English (Pirate))

Currently translated at 100.0% (211 of 211 strings)

Translation: Habitica/Tasks
Translate-URL: https://translate.habitica.com/projects/habitica/tasks/en@pirate/

* Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (341 of 341 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/en_GB/

* Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (482 of 482 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/en_GB/

* Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (157 of 157 strings)

Translation: Habitica/Limited
Translate-URL: https://translate.habitica.com/projects/habitica/limited/en_GB/

* Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (157 of 157 strings)

Translation: Habitica/Limited
Translate-URL: https://translate.habitica.com/projects/habitica/limited/en_GB/

* Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (170 of 170 strings)

Translation: Habitica/Npc
Translate-URL: https://translate.habitica.com/projects/habitica/npc/en_GB/

* Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (146 of 146 strings)

Translation: Habitica/Pets
Translate-URL: https://translate.habitica.com/projects/habitica/pets/en_GB/

* Translated using Weblate (French)

Currently translated at 100.0% (206 of 206 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/fr/

* Translated using Weblate (French)

Currently translated at 100.0% (7 of 7 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/fr/

* Translated using Weblate (French)

Currently translated at 100.0% (137 of 137 strings)

Translation: Habitica/Challenge
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/fr/

* Translated using Weblate (French)

Currently translated at 100.0% (226 of 226 strings)

Translation: Habitica/Character
Translate-URL: https://translate.habitica.com/projects/habitica/character/fr/

* Translated using Weblate (French)

Currently translated at 100.0% (78 of 78 strings)

Translation: Habitica/Contrib
Translate-URL: https://translate.habitica.com/projects/habitica/contrib/fr/

* Translated using Weblate (French)

Currently translated at 100.0% (126 of 126 strings)

Translation: Habitica/Communityguidelines
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/fr/

* Translated using Weblate (French)

Currently translated at 100.0% (15 of 15 strings)

Translation: Habitica/Death
Translate-URL: https://translate.habitica.com/projects/habitica/death/fr/

* Translated using Weblate (French)

Currently translated at 100.0% (15 of 15 strings)

Translation: Habitica/Death
Translate-URL: https://translate.habitica.com/projects/habitica/death/fr/

* Translated using Weblate (French)

Currently translated at 100.0% (56 of 56 strings)

Translation: Habitica/Faq
Translate-URL: https://translate.habitica.com/projects/habitica/faq/fr/

* Translated using Weblate (French)

Currently translated at 100.0% (333 of 333 strings)

Translation: Habitica/Front
Translate-URL: https://translate.habitica.com/projects/habitica/front/fr/

* Translated using Weblate (French)

Currently translated at 100.0% (293 of 293 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/fr/

* Translated using Weblate (French)

Currently translated at 100.0% (482 of 482 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/fr/

* Translated using Weblate (French)

Currently translated at 100.0% (8 of 8 strings)

Translation: Habitica/Overview
Translate-URL: https://translate.habitica.com/projects/habitica/overview/fr/

* Translated using Weblate (French)

Currently translated at 100.0% (217 of 217 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/fr/

* Translated using Weblate (German)

Currently translated at 100.0% (7 of 7 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/de/

* Translated using Weblate (German)

Currently translated at 100.0% (424 of 424 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/de/

* Translated using Weblate (German)

Currently translated at 100.0% (341 of 341 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/de/

* Translated using Weblate (German)

Currently translated at 100.0% (78 of 78 strings)

Translation: Habitica/Contrib
Translate-URL: https://translate.habitica.com/projects/habitica/contrib/de/

* Translated using Weblate (German)

Currently translated at 100.0% (126 of 126 strings)

Translation: Habitica/Communityguidelines
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/de/

* Translated using Weblate (German)

Currently translated at 100.0% (638 of 638 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/de/

* Translated using Weblate (German)

Currently translated at 100.0% (1809 of 1809 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/de/

* Translated using Weblate (German)

Currently translated at 100.0% (482 of 482 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/de/

* Translated using Weblate (German)

Currently translated at 100.0% (12 of 12 strings)

Translation: Habitica/Merch
Translate-URL: https://translate.habitica.com/projects/habitica/merch/de/

* Translated using Weblate (German)

Currently translated at 100.0% (66 of 66 strings)

Translation: Habitica/Messages
Translate-URL: https://translate.habitica.com/projects/habitica/messages/de/

* Translated using Weblate (German)

Currently translated at 100.0% (146 of 146 strings)

Translation: Habitica/Pets
Translate-URL: https://translate.habitica.com/projects/habitica/pets/de/

* Translated using Weblate (German)

Currently translated at 100.0% (128 of 128 strings)

Translation: Habitica/Quests
Translate-URL: https://translate.habitica.com/projects/habitica/quests/de/

* Translated using Weblate (German)

Currently translated at 100.0% (218 of 218 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/de/

* Translated using Weblate (German)

Currently translated at 100.0% (211 of 211 strings)

Translation: Habitica/Tasks
Translate-URL: https://translate.habitica.com/projects/habitica/tasks/de/

* Translated using Weblate (German)

Currently translated at 100.0% (36 of 36 strings)

Translation: Habitica/Loadingscreentips
Translate-URL: https://translate.habitica.com/projects/habitica/loadingscreentips/de/

* Translated using Weblate (Hebrew)

Currently translated at 90.0% (307 of 341 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/he/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (157 of 157 strings)

Translation: Habitica/Limited
Translate-URL: https://translate.habitica.com/projects/habitica/limited/hu/

* Translated using Weblate (Indonesian)

Currently translated at 100.0% (206 of 206 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/id/

* Translated using Weblate (Indonesian)

Currently translated at 95.3% (411 of 431 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/id/

* Translated using Weblate (Indonesian)

Currently translated at 100.0% (226 of 226 strings)

Translation: Habitica/Character
Translate-URL: https://translate.habitica.com/projects/habitica/character/id/

* Translated using Weblate (Italian)

Currently translated at 100.0% (78 of 78 strings)

Translation: Habitica/Contrib
Translate-URL: https://translate.habitica.com/projects/habitica/contrib/it/

* Translated using Weblate (Japanese)

Currently translated at 100.0% (206 of 206 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/ja/

* Translated using Weblate (Japanese)

Currently translated at 100.0% (431 of 431 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/ja/

* Translated using Weblate (Japanese)

Currently translated at 100.0% (137 of 137 strings)

Translation: Habitica/Challenge
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/ja/

* Translated using Weblate (Japanese)

Currently translated at 100.0% (226 of 226 strings)

Translation: Habitica/Character
Translate-URL: https://translate.habitica.com/projects/habitica/character/ja/

* Translated using Weblate (Japanese)

Currently translated at 100.0% (78 of 78 strings)

Translation: Habitica/Contrib
Translate-URL: https://translate.habitica.com/projects/habitica/contrib/ja/

* Translated using Weblate (Japanese)

Currently translated at 100.0% (341 of 341 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/ja/

* Translated using Weblate (Japanese)

Currently translated at 100.0% (126 of 126 strings)

Translation: Habitica/Communityguidelines
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/ja/

* Translated using Weblate (Japanese)

Currently translated at 100.0% (638 of 638 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/ja/

* Translated using Weblate (Japanese)

Currently translated at 100.0% (638 of 638 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/ja/

* Translated using Weblate (Japanese)

Currently translated at 100.0% (15 of 15 strings)

Translation: Habitica/Death
Translate-URL: https://translate.habitica.com/projects/habitica/death/ja/

* Translated using Weblate (Japanese)

Currently translated at 100.0% (26 of 26 strings)

Translation: Habitica/Defaulttasks
Translate-URL: https://translate.habitica.com/projects/habitica/defaulttasks/ja/

* Translated using Weblate (Japanese)

Currently translated at 100.0% (56 of 56 strings)

Translation: Habitica/Faq
Translate-URL: https://translate.habitica.com/projects/habitica/faq/ja/

* Translated using Weblate (Japanese)

Currently translated at 100.0% (332 of 332 strings)

Translation: Habitica/Front
Translate-URL: https://translate.habitica.com/projects/habitica/front/ja/

* Translated using Weblate (Japanese)

Currently translated at 100.0% (293 of 293 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/ja/

* Translated using Weblate (Japanese)

Currently translated at 100.0% (1809 of 1809 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/ja/

* Translated using Weblate (Japanese)

Currently translated at 100.0% (482 of 482 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/ja/

* Translated using Weblate (Japanese)

Currently translated at 100.0% (27 of 27 strings)

Translation: Habitica/Loginincentives
Translate-URL: https://translate.habitica.com/projects/habitica/loginincentives/ja/

* Translated using Weblate (Japanese)

Currently translated at 100.0% (157 of 157 strings)

Translation: Habitica/Limited
Translate-URL: https://translate.habitica.com/projects/habitica/limited/ja/

* Translated using Weblate (Japanese)

Currently translated at 100.0% (31 of 31 strings)

Translation: Habitica/Maintenance
Translate-URL: https://translate.habitica.com/projects/habitica/maintenance/ja/

* Translated using Weblate (Japanese)

Currently translated at 100.0% (12 of 12 strings)

Translation: Habitica/Merch
Translate-URL: https://translate.habitica.com/projects/habitica/merch/ja/

* Translated using Weblate (Japanese)

Currently translated at 100.0% (66 of 66 strings)

Translation: Habitica/Messages
Translate-URL: https://translate.habitica.com/projects/habitica/messages/ja/

* Translated using Weblate (Japanese)

Currently translated at 100.0% (4 of 4 strings)

Translation: Habitica/Noscript
Translate-URL: https://translate.habitica.com/projects/habitica/noscript/ja/

* Translated using Weblate (Japanese)

Currently translated at 100.0% (8 of 8 strings)

Translation: Habitica/Overview
Translate-URL: https://translate.habitica.com/projects/habitica/overview/ja/

* Translated using Weblate (Japanese)

Currently translated at 100.0% (170 of 170 strings)

Translation: Habitica/Npc
Translate-URL: https://translate.habitica.com/projects/habitica/npc/ja/

* Translated using Weblate (Japanese)

Currently translated at 100.0% (146 of 146 strings)

Translation: Habitica/Pets
Translate-URL: https://translate.habitica.com/projects/habitica/pets/ja/

* Translated using Weblate (Japanese)

Currently translated at 100.0% (27 of 27 strings)

Translation: Habitica/Rebirth
Translate-URL: https://translate.habitica.com/projects/habitica/rebirth/ja/

* Translated using Weblate (Japanese)

Currently translated at 100.0% (128 of 128 strings)

Translation: Habitica/Quests
Translate-URL: https://translate.habitica.com/projects/habitica/quests/ja/

* Translated using Weblate (Japanese)

Currently translated at 100.0% (57 of 57 strings)

Translation: Habitica/Spells
Translate-URL: https://translate.habitica.com/projects/habitica/spells/ja/

* Translated using Weblate (Japanese)

Currently translated at 100.0% (218 of 218 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/ja/

* Translated using Weblate (Japanese)

Currently translated at 100.0% (211 of 211 strings)

Translation: Habitica/Tasks
Translate-URL: https://translate.habitica.com/projects/habitica/tasks/ja/

* Translated using Weblate (Japanese)

Currently translated at 100.0% (36 of 36 strings)

Translation: Habitica/Loadingscreentips
Translate-URL: https://translate.habitica.com/projects/habitica/loadingscreentips/ja/

* Translated using Weblate (Polish)

Currently translated at 100.0% (206 of 206 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/pl/

* Translated using Weblate (Polish)

Currently translated at 100.0% (424 of 424 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/pl/

* Translated using Weblate (Polish)

Currently translated at 100.0% (226 of 226 strings)

Translation: Habitica/Character
Translate-URL: https://translate.habitica.com/projects/habitica/character/pl/

* Translated using Weblate (Polish)

Currently translated at 100.0% (78 of 78 strings)

Translation: Habitica/Contrib
Translate-URL: https://translate.habitica.com/projects/habitica/contrib/pl/

* Translated using Weblate (Polish)

Currently translated at 100.0% (341 of 341 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/pl/

* Translated using Weblate (Polish)

Currently translated at 100.0% (126 of 126 strings)

Translation: Habitica/Communityguidelines
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/pl/

* Translated using Weblate (Polish)

Currently translated at 100.0% (126 of 126 strings)

Translation: Habitica/Communityguidelines
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/pl/

* Translated using Weblate (Polish)

Currently translated at 100.0% (15 of 15 strings)

Translation: Habitica/Death
Translate-URL: https://translate.habitica.com/projects/habitica/death/pl/

* Translated using Weblate (Polish)

Currently translated at 98.2% (55 of 56 strings)

Translation: Habitica/Faq
Translate-URL: https://translate.habitica.com/projects/habitica/faq/pl/

* Translated using Weblate (Polish)

Currently translated at 100.0% (482 of 482 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/pl/

* Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (431 of 431 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/pt_BR/

* Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (341 of 341 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/pt_BR/

* Translated using Weblate (Russian)

Currently translated at 99.1% (338 of 341 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/ru/

* Translated using Weblate (Russian)

Currently translated at 99.1% (338 of 341 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/ru/

* Translated using Weblate (Russian)

Currently translated at 100.0% (293 of 293 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/ru/

* Translated using Weblate (Russian)

Currently translated at 100.0% (1767 of 1767 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/ru/

* Translated using Weblate (Russian)

Currently translated at 100.0% (1767 of 1767 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/ru/

* Translated using Weblate (Russian)

Currently translated at 100.0% (482 of 482 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/ru/

* Translated using Weblate (Russian)

Currently translated at 100.0% (482 of 482 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/ru/

* Translated using Weblate (Russian)

Currently translated at 100.0% (146 of 146 strings)

Translation: Habitica/Pets
Translate-URL: https://translate.habitica.com/projects/habitica/pets/ru/

* Translated using Weblate (Russian)

Currently translated at 100.0% (146 of 146 strings)

Translation: Habitica/Pets
Translate-URL: https://translate.habitica.com/projects/habitica/pets/ru/

* Translated using Weblate (Slovak)

Currently translated at 100.0% (7 of 7 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/sk/

* Translated using Weblate (Slovak)

Currently translated at 93.2% (318 of 341 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/sk/

* Translated using Weblate (Slovak)

Currently translated at 99.6% (292 of 293 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/sk/

* Translated using Weblate (Slovak)

Currently translated at 100.0% (146 of 146 strings)

Translation: Habitica/Pets
Translate-URL: https://translate.habitica.com/projects/habitica/pets/sk/

* Translated using Weblate (Spanish)

Currently translated at 100.0% (206 of 206 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/es/

* Translated using Weblate (Spanish)

Currently translated at 100.0% (431 of 431 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/es/

* Translated using Weblate (Spanish)

Currently translated at 100.0% (137 of 137 strings)

Translation: Habitica/Challenge
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/es/

* Translated using Weblate (Spanish)

Currently translated at 100.0% (226 of 226 strings)

Translation: Habitica/Character
Translate-URL: https://translate.habitica.com/projects/habitica/character/es/

* Translated using Weblate (Spanish)

Currently translated at 100.0% (341 of 341 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/es/

* Translated using Weblate (Spanish)

Currently translated at 100.0% (78 of 78 strings)

Translation: Habitica/Contrib
Translate-URL: https://translate.habitica.com/projects/habitica/contrib/es/

* Translated using Weblate (Spanish)

Currently translated at 100.0% (126 of 126 strings)

Translation: Habitica/Communityguidelines
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/es/

* Translated using Weblate (Spanish)

Currently translated at 100.0% (638 of 638 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/es/

* Translated using Weblate (Spanish)

Currently translated at 100.0% (56 of 56 strings)

Translation: Habitica/Faq
Translate-URL: https://translate.habitica.com/projects/habitica/faq/es/

* Translated using Weblate (Spanish)

Currently translated at 100.0% (333 of 333 strings)

Translation: Habitica/Front
Translate-URL: https://translate.habitica.com/projects/habitica/front/es/

* Translated using Weblate (Spanish)

Currently translated at 100.0% (293 of 293 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/es/

* Translated using Weblate (Spanish)

Currently translated at 100.0% (293 of 293 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/es/

* Translated using Weblate (Spanish)

Currently translated at 100.0% (1767 of 1767 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/es/

* Translated using Weblate (Spanish)

Currently translated at 100.0% (482 of 482 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/es/

* Translated using Weblate (Spanish)

Currently translated at 100.0% (27 of 27 strings)

Translation: Habitica/Loginincentives
Translate-URL: https://translate.habitica.com/projects/habitica/loginincentives/es/

* Translated using Weblate (Spanish)

Currently translated at 100.0% (157 of 157 strings)

Translation: Habitica/Limited
Translate-URL: https://translate.habitica.com/projects/habitica/limited/es/

* Translated using Weblate (Spanish)

Currently translated at 100.0% (66 of 66 strings)

Translation: Habitica/Messages
Translate-URL: https://translate.habitica.com/projects/habitica/messages/es/

* Translated using Weblate (Spanish)

Currently translated at 100.0% (66 of 66 strings)

Translation: Habitica/Messages
Translate-URL: https://translate.habitica.com/projects/habitica/messages/es/

* Translated using Weblate (Spanish)

Currently translated at 100.0% (66 of 66 strings)

Translation: Habitica/Messages
Translate-URL: https://translate.habitica.com/projects/habitica/messages/es/

* Translated using Weblate (Spanish)

Currently translated at 100.0% (170 of 170 strings)

Translation: Habitica/Npc
Translate-URL: https://translate.habitica.com/projects/habitica/npc/es/

* Translated using Weblate (Spanish)

Currently translated at 100.0% (146 of 146 strings)

Translation: Habitica/Pets
Translate-URL: https://translate.habitica.com/projects/habitica/pets/es/

* Translated using Weblate (Spanish)

Currently translated at 100.0% (128 of 128 strings)

Translation: Habitica/Quests
Translate-URL: https://translate.habitica.com/projects/habitica/quests/es/

* Translated using Weblate (Spanish)

Currently translated at 100.0% (57 of 57 strings)

Translation: Habitica/Spells
Translate-URL: https://translate.habitica.com/projects/habitica/spells/es/

* Translated using Weblate (Spanish)

Currently translated at 100.0% (217 of 217 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/es/

* Translated using Weblate (Spanish)

Currently translated at 100.0% (211 of 211 strings)

Translation: Habitica/Tasks
Translate-URL: https://translate.habitica.com/projects/habitica/tasks/es/

* Translated using Weblate (Spanish)

Currently translated at 100.0% (36 of 36 strings)

Translation: Habitica/Loadingscreentips
Translate-URL: https://translate.habitica.com/projects/habitica/loadingscreentips/es/

* Translated using Weblate (Spanish (Latin America))

Currently translated at 96.7% (417 of 431 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/es_419/

* Translated using Weblate (Spanish (Latin America))

Currently translated at 94.1% (321 of 341 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/es_419/

* Translated using Weblate (Spanish (Latin America))

Currently translated at 94.1% (321 of 341 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/es_419/

* Translated using Weblate (Spanish (Latin America))

Currently translated at 98.6% (144 of 146 strings)

Translation: Habitica/Pets
Translate-URL: https://translate.habitica.com/projects/habitica/pets/es_419/

* Translated using Weblate (Swedish)

Currently translated at 100.0% (206 of 206 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/sv/

* Translated using Weblate (Swedish)

Currently translated at 100.0% (7 of 7 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/sv/

* Translated using Weblate (Swedish)

Currently translated at 100.0% (431 of 431 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/sv/

* Translated using Weblate (Swedish)

Currently translated at 100.0% (137 of 137 strings)

Translation: Habitica/Challenge
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/sv/

* Translated using Weblate (Swedish)

Currently translated at 100.0% (226 of 226 strings)

Translation: Habitica/Character
Translate-URL: https://translate.habitica.com/projects/habitica/character/sv/

* Translated using Weblate (Swedish)

Currently translated at 99.7% (340 of 341 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/sv/

* Translated using Weblate (Swedish)

Currently translated at 99.6% (636 of 638 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/sv/

* Translated using Weblate (Swedish)

Currently translated at 100.0% (56 of 56 strings)

Translation: Habitica/Faq
Translate-URL: https://translate.habitica.com/projects/habitica/faq/sv/

* Translated using Weblate (Swedish)

Currently translated at 99.6% (331 of 332 strings)

Translation: Habitica/Front
Translate-URL: https://translate.habitica.com/projects/habitica/front/sv/

* Translated using Weblate (Swedish)

Currently translated at 100.0% (1809 of 1809 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/sv/

* Translated using Weblate (Swedish)

Currently translated at 99.7% (481 of 482 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/sv/

* Translated using Weblate (Swedish)

Currently translated at 100.0% (157 of 157 strings)

Translation: Habitica/Limited
Translate-URL: https://translate.habitica.com/projects/habitica/limited/sv/

* Translated using Weblate (Swedish)

Currently translated at 100.0% (66 of 66 strings)

Translation: Habitica/Messages
Translate-URL: https://translate.habitica.com/projects/habitica/messages/sv/

* Translated using Weblate (Swedish)

Currently translated at 100.0% (218 of 218 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/sv/

* Translated using Weblate (Turkish)

Currently translated at 100.0% (7 of 7 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/tr/

* Translated using Weblate (Turkish)

Currently translated at 100.0% (431 of 431 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/tr/

* Translated using Weblate (Turkish)

Currently translated at 100.0% (137 of 137 strings)

Translation: Habitica/Challenge
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/tr/

* Translated using Weblate (Ukrainian)

Currently translated at 97.6% (414 of 424 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/uk/

* Translated using Weblate (Ukrainian)

Currently translated at 100.0% (341 of 341 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/uk/

* Translated using Weblate (Ukrainian)

Currently translated at 100.0% (293 of 293 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/uk/

* Translated using Weblate (Ukrainian)

Currently translated at 100.0% (66 of 66 strings)

Translation: Habitica/Messages
Translate-URL: https://translate.habitica.com/projects/habitica/messages/uk/
2019-07-30 15:12:10 -04:00
Alys c80de38572 add shadow-muting chat hiding feature (automatic flagging of public posts from shadow-muted players) - fixes 10851 (#11239)
* move existing tests for chatRevoked users to 'mute user' describe block

* give consistent names to chatRevoked tests and use const not let

* improve methods for restoring chat permissions to test users

* add tests for shadow-muting and define constants for flag-related numbers

* update user profile URLs and reverse private/public 'if' statements

* implement shadow muting in the API and schemas

* add interface for mods to turn shadow muting on/off for a user

- checkbox in the Hall
- icon in the user's profile

* mark chat posts as being shadow muted (marking is visible to mods only)

* convert Admin Tools in profile from icons to text; make crown icon a toggle

* move logic for displaying flag count to a computed property

* prevent chat notifications for shadow-muted posts
2019-07-30 19:09:42 +02:00
Matteo Pagliazzi b4b9caed83 Merge branch 'release' into develop 2019-07-30 19:07:13 +02:00
Matteo Pagliazzi dc15328e13 fix(group plans): create btn class 2019-07-30 19:05:37 +02:00
Phillip Thelen 5917b1a0e1 Fix cron test 2019-07-30 18:58:21 +02:00
Phillip Thelen ebd41a3163 Adjust experience required for first levels 2019-07-30 18:41:54 +02:00
Данил 3fdfa231b7 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (66 of 66 strings)

Translation: Habitica/Messages
Translate-URL: https://translate.habitica.com/projects/habitica/messages/uk/
2019-07-29 12:53:46 +02:00
Max Lyashuk dc076b15a8 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (293 of 293 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/uk/
2019-07-29 12:53:45 +02:00
Данил 76feb1f8c5 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (341 of 341 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/uk/
2019-07-29 12:53:44 +02:00
Max Lyashuk 6b22f51a66 Translated using Weblate (Ukrainian)
Currently translated at 97.6% (414 of 424 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/uk/
2019-07-29 12:53:41 +02:00
Zehra Bayram 704f44338b Translated using Weblate (Turkish)
Currently translated at 100.0% (137 of 137 strings)

Translation: Habitica/Challenge
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/tr/
2019-07-29 12:53:40 +02:00
Zehra Bayram 942f28466e Translated using Weblate (Turkish)
Currently translated at 100.0% (431 of 431 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/tr/
2019-07-29 12:53:39 +02:00
Zehra Bayram 733d3d5c01 Translated using Weblate (Turkish)
Currently translated at 100.0% (7 of 7 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/tr/
2019-07-29 12:53:36 +02:00
Mia S 35bc677f03 Translated using Weblate (Swedish)
Currently translated at 100.0% (218 of 218 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/sv/
2019-07-29 12:53:35 +02:00
Mia S cd274038b5 Translated using Weblate (Swedish)
Currently translated at 100.0% (66 of 66 strings)

Translation: Habitica/Messages
Translate-URL: https://translate.habitica.com/projects/habitica/messages/sv/
2019-07-29 12:53:34 +02:00
Mia S 47df888060 Translated using Weblate (Swedish)
Currently translated at 100.0% (157 of 157 strings)

Translation: Habitica/Limited
Translate-URL: https://translate.habitica.com/projects/habitica/limited/sv/
2019-07-29 12:53:33 +02:00
Mia S a491528f80 Translated using Weblate (Swedish)
Currently translated at 99.7% (481 of 482 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/sv/
2019-07-29 12:53:31 +02:00
Mia S 9e25feb22f Translated using Weblate (Swedish)
Currently translated at 100.0% (1809 of 1809 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/sv/
2019-07-29 12:53:29 +02:00
Mia S 0a8aa4630b Translated using Weblate (Swedish)
Currently translated at 99.6% (331 of 332 strings)

Translation: Habitica/Front
Translate-URL: https://translate.habitica.com/projects/habitica/front/sv/
2019-07-29 12:53:18 +02:00
Mia S 1237c1c965 Translated using Weblate (Swedish)
Currently translated at 100.0% (56 of 56 strings)

Translation: Habitica/Faq
Translate-URL: https://translate.habitica.com/projects/habitica/faq/sv/
2019-07-29 12:53:17 +02:00
Mia S cf484129a5 Translated using Weblate (Swedish)
Currently translated at 99.6% (636 of 638 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/sv/
2019-07-29 12:53:16 +02:00
Mia S 8130afcf33 Translated using Weblate (Swedish)
Currently translated at 99.7% (340 of 341 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/sv/
2019-07-29 12:53:15 +02:00
Mia S bbe496fda9 Translated using Weblate (Swedish)
Currently translated at 100.0% (226 of 226 strings)

Translation: Habitica/Character
Translate-URL: https://translate.habitica.com/projects/habitica/character/sv/
2019-07-29 12:53:11 +02:00
Mia S e32cf5a581 Translated using Weblate (Swedish)
Currently translated at 100.0% (137 of 137 strings)

Translation: Habitica/Challenge
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/sv/
2019-07-29 12:53:10 +02:00
Mia S 5f67e223b8 Translated using Weblate (Swedish)
Currently translated at 100.0% (431 of 431 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/sv/
2019-07-29 12:53:09 +02:00
Mia S 13f2bf29f0 Translated using Weblate (Swedish)
Currently translated at 100.0% (7 of 7 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/sv/
2019-07-29 12:53:05 +02:00
Mia S a66320a35f Translated using Weblate (Swedish)
Currently translated at 100.0% (206 of 206 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/sv/
2019-07-29 12:53:04 +02:00
Scarlet Wolfe 93a77d0ad1 Translated using Weblate (Spanish (Latin America))
Currently translated at 98.6% (144 of 146 strings)

Translation: Habitica/Pets
Translate-URL: https://translate.habitica.com/projects/habitica/pets/es_419/
2019-07-29 12:53:03 +02:00
Gustavo Pantufla 97c281cff6 Translated using Weblate (Spanish (Latin America))
Currently translated at 94.1% (321 of 341 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/es_419/
2019-07-29 12:53:02 +02:00
Scarlet Wolfe 81d53d9f9e Translated using Weblate (Spanish (Latin America))
Currently translated at 94.1% (321 of 341 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/es_419/
2019-07-29 12:53:02 +02:00
Gustavo Pantufla 597492539f Translated using Weblate (Spanish (Latin America))
Currently translated at 96.7% (417 of 431 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/es_419/
2019-07-29 12:53:00 +02:00
Gustavo Pantufla 9d3f4c605e Translated using Weblate (Spanish)
Currently translated at 100.0% (36 of 36 strings)

Translation: Habitica/Loadingscreentips
Translate-URL: https://translate.habitica.com/projects/habitica/loadingscreentips/es/
2019-07-29 12:52:59 +02:00
Gustavo Pantufla 0c6d9869e5 Translated using Weblate (Spanish)
Currently translated at 100.0% (211 of 211 strings)

Translation: Habitica/Tasks
Translate-URL: https://translate.habitica.com/projects/habitica/tasks/es/
2019-07-29 12:52:58 +02:00
Gustavo Pantufla 262e226e30 Translated using Weblate (Spanish)
Currently translated at 100.0% (217 of 217 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/es/
2019-07-29 12:52:57 +02:00
Gustavo Pantufla 853de04cf9 Translated using Weblate (Spanish)
Currently translated at 100.0% (57 of 57 strings)

Translation: Habitica/Spells
Translate-URL: https://translate.habitica.com/projects/habitica/spells/es/
2019-07-29 12:52:56 +02:00
Gustavo Pantufla 0def89422b Translated using Weblate (Spanish)
Currently translated at 100.0% (128 of 128 strings)

Translation: Habitica/Quests
Translate-URL: https://translate.habitica.com/projects/habitica/quests/es/
2019-07-29 12:52:55 +02:00
Gustavo Pantufla c1572b278f Translated using Weblate (Spanish)
Currently translated at 100.0% (146 of 146 strings)

Translation: Habitica/Pets
Translate-URL: https://translate.habitica.com/projects/habitica/pets/es/
2019-07-29 12:52:53 +02:00
Gustavo Pantufla 096f382a70 Translated using Weblate (Spanish)
Currently translated at 100.0% (170 of 170 strings)

Translation: Habitica/Npc
Translate-URL: https://translate.habitica.com/projects/habitica/npc/es/
2019-07-29 12:52:52 +02:00
Gustavo Pantufla c268191470 Translated using Weblate (Spanish)
Currently translated at 100.0% (66 of 66 strings)

Translation: Habitica/Messages
Translate-URL: https://translate.habitica.com/projects/habitica/messages/es/
2019-07-29 12:52:51 +02:00
Kayla Marie Wainsztein Di Vito b711f35c11 Translated using Weblate (Spanish)
Currently translated at 100.0% (66 of 66 strings)

Translation: Habitica/Messages
Translate-URL: https://translate.habitica.com/projects/habitica/messages/es/
2019-07-29 12:52:50 +02:00
Wing Yan Jacqueline Tam e0b3c0a378 Translated using Weblate (Spanish)
Currently translated at 100.0% (66 of 66 strings)

Translation: Habitica/Messages
Translate-URL: https://translate.habitica.com/projects/habitica/messages/es/
2019-07-29 12:52:50 +02:00
Gustavo Pantufla eb80692ddf Translated using Weblate (Spanish)
Currently translated at 100.0% (157 of 157 strings)

Translation: Habitica/Limited
Translate-URL: https://translate.habitica.com/projects/habitica/limited/es/
2019-07-29 12:52:49 +02:00
Gustavo Pantufla 79cfac27f8 Translated using Weblate (Spanish)
Currently translated at 100.0% (27 of 27 strings)

Translation: Habitica/Loginincentives
Translate-URL: https://translate.habitica.com/projects/habitica/loginincentives/es/
2019-07-29 12:52:48 +02:00
Gustavo Pantufla e49c7f6fb2 Translated using Weblate (Spanish)
Currently translated at 100.0% (482 of 482 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/es/
2019-07-29 12:52:46 +02:00
Gustavo Pantufla 3f500ba488 Translated using Weblate (Spanish)
Currently translated at 100.0% (1767 of 1767 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/es/
2019-07-29 12:52:44 +02:00
Gustavo Pantufla 740b96305e Translated using Weblate (Spanish)
Currently translated at 100.0% (293 of 293 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/es/
2019-07-29 12:52:42 +02:00
Wing Yan Jacqueline Tam c9ad41d625 Translated using Weblate (Spanish)
Currently translated at 100.0% (293 of 293 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/es/
2019-07-29 12:52:41 +02:00
Gustavo Pantufla adbe0a01bc Translated using Weblate (Spanish)
Currently translated at 100.0% (333 of 333 strings)

Translation: Habitica/Front
Translate-URL: https://translate.habitica.com/projects/habitica/front/es/
2019-07-29 12:52:40 +02:00
Gustavo Pantufla a3afb4b998 Translated using Weblate (Spanish)
Currently translated at 100.0% (56 of 56 strings)

Translation: Habitica/Faq
Translate-URL: https://translate.habitica.com/projects/habitica/faq/es/
2019-07-29 12:52:39 +02:00
Gustavo Pantufla bbaae9b030 Translated using Weblate (Spanish)
Currently translated at 100.0% (638 of 638 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/es/
2019-07-29 12:52:38 +02:00
Gustavo Pantufla 12f72d8c17 Translated using Weblate (Spanish)
Currently translated at 100.0% (126 of 126 strings)

Translation: Habitica/Communityguidelines
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/es/
2019-07-29 12:52:37 +02:00
Gustavo Pantufla ecf77dfd1d Translated using Weblate (Spanish)
Currently translated at 100.0% (78 of 78 strings)

Translation: Habitica/Contrib
Translate-URL: https://translate.habitica.com/projects/habitica/contrib/es/
2019-07-29 12:52:36 +02:00
Gustavo Pantufla 68d2e9b937 Translated using Weblate (Spanish)
Currently translated at 100.0% (341 of 341 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/es/
2019-07-29 12:52:34 +02:00
Gustavo Pantufla 95c1cfe868 Translated using Weblate (Spanish)
Currently translated at 100.0% (226 of 226 strings)

Translation: Habitica/Character
Translate-URL: https://translate.habitica.com/projects/habitica/character/es/
2019-07-29 12:52:32 +02:00
Gustavo Pantufla 0bc39536d1 Translated using Weblate (Spanish)
Currently translated at 100.0% (137 of 137 strings)

Translation: Habitica/Challenge
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/es/
2019-07-29 12:52:30 +02:00
Gustavo Pantufla a7ddeb7b89 Translated using Weblate (Spanish)
Currently translated at 100.0% (431 of 431 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/es/
2019-07-29 12:52:29 +02:00
Wing Yan Jacqueline Tam 06eba8c545 Translated using Weblate (Spanish)
Currently translated at 100.0% (206 of 206 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/es/
2019-07-29 12:52:28 +02:00
Nikol D f4267bf3da Translated using Weblate (Slovak)
Currently translated at 100.0% (146 of 146 strings)

Translation: Habitica/Pets
Translate-URL: https://translate.habitica.com/projects/habitica/pets/sk/
2019-07-29 12:52:27 +02:00
Nikol D 5484cf182c Translated using Weblate (Slovak)
Currently translated at 99.6% (292 of 293 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/sk/
2019-07-29 12:52:26 +02:00
Aryan Tomar 02f2347b9a Translated using Weblate (Slovak)
Currently translated at 93.2% (318 of 341 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/sk/
2019-07-29 12:52:25 +02:00
Nikol D eb1c0fd4d8 Translated using Weblate (Slovak)
Currently translated at 100.0% (7 of 7 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/sk/
2019-07-29 12:52:24 +02:00
Yuri Mashukov 5a4408c6ff Translated using Weblate (Russian)
Currently translated at 100.0% (146 of 146 strings)

Translation: Habitica/Pets
Translate-URL: https://translate.habitica.com/projects/habitica/pets/ru/
2019-07-29 12:52:23 +02:00
Maximilian Antipenko 3a16957d29 Translated using Weblate (Russian)
Currently translated at 100.0% (146 of 146 strings)

Translation: Habitica/Pets
Translate-URL: https://translate.habitica.com/projects/habitica/pets/ru/
2019-07-29 12:52:23 +02:00
Ksenia Evteeva db17a1ffad Translated using Weblate (Russian)
Currently translated at 100.0% (482 of 482 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/ru/
2019-07-29 12:52:22 +02:00
Yuri Mashukov 33c570217c Translated using Weblate (Russian)
Currently translated at 100.0% (482 of 482 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/ru/
2019-07-29 12:52:21 +02:00
Ksenia Evteeva e9373142da Translated using Weblate (Russian)
Currently translated at 100.0% (1767 of 1767 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/ru/
2019-07-29 12:52:20 +02:00
Yuri Mashukov 6d1690ed1c Translated using Weblate (Russian)
Currently translated at 100.0% (1767 of 1767 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/ru/
2019-07-29 12:52:20 +02:00
Ksenia Evteeva 599b97cec6 Translated using Weblate (Russian)
Currently translated at 100.0% (293 of 293 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/ru/
2019-07-29 12:52:16 +02:00
usat1y 6fa3a6cecb Translated using Weblate (Russian)
Currently translated at 99.1% (338 of 341 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/ru/
2019-07-29 12:52:15 +02:00
Yuri Mashukov 6efd572065 Translated using Weblate (Russian)
Currently translated at 99.1% (338 of 341 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/ru/
2019-07-29 12:52:14 +02:00
Matheus Victor 3441016907 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (341 of 341 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/pt_BR/
2019-07-29 12:52:12 +02:00
Matheus Victor 99666f899c Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (431 of 431 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/pt_BR/
2019-07-29 12:52:09 +02:00
Michał C c9f80a1bb1 Translated using Weblate (Polish)
Currently translated at 100.0% (482 of 482 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/pl/
2019-07-29 12:52:04 +02:00
Michał C e27a115721 Translated using Weblate (Polish)
Currently translated at 98.2% (55 of 56 strings)

Translation: Habitica/Faq
Translate-URL: https://translate.habitica.com/projects/habitica/faq/pl/
2019-07-29 12:52:03 +02:00
Michał C 9625a2612f Translated using Weblate (Polish)
Currently translated at 100.0% (15 of 15 strings)

Translation: Habitica/Death
Translate-URL: https://translate.habitica.com/projects/habitica/death/pl/
2019-07-29 12:52:02 +02:00
Michał C 1efb45a752 Translated using Weblate (Polish)
Currently translated at 100.0% (126 of 126 strings)

Translation: Habitica/Communityguidelines
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/pl/
2019-07-29 12:52:01 +02:00
Aleksandra Pieńkosz f2f0dd6f06 Translated using Weblate (Polish)
Currently translated at 100.0% (126 of 126 strings)

Translation: Habitica/Communityguidelines
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/pl/
2019-07-29 12:52:01 +02:00
Michał C 08ddaa213e Translated using Weblate (Polish)
Currently translated at 100.0% (341 of 341 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/pl/
2019-07-29 12:52:00 +02:00
Michał C 2097dee792 Translated using Weblate (Polish)
Currently translated at 100.0% (78 of 78 strings)

Translation: Habitica/Contrib
Translate-URL: https://translate.habitica.com/projects/habitica/contrib/pl/
2019-07-29 12:51:57 +02:00
Michał C 079fcbe983 Translated using Weblate (Polish)
Currently translated at 100.0% (226 of 226 strings)

Translation: Habitica/Character
Translate-URL: https://translate.habitica.com/projects/habitica/character/pl/
2019-07-29 12:51:56 +02:00
Michał C 08fd972931 Translated using Weblate (Polish)
Currently translated at 100.0% (424 of 424 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/pl/
2019-07-29 12:51:55 +02:00
Michał C d16db714a4 Translated using Weblate (Polish)
Currently translated at 100.0% (206 of 206 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/pl/
2019-07-29 12:51:54 +02:00
そら b5d66b616d Translated using Weblate (Japanese)
Currently translated at 100.0% (36 of 36 strings)

Translation: Habitica/Loadingscreentips
Translate-URL: https://translate.habitica.com/projects/habitica/loadingscreentips/ja/
2019-07-29 12:51:53 +02:00
そら d1f09d9dd1 Translated using Weblate (Japanese)
Currently translated at 100.0% (211 of 211 strings)

Translation: Habitica/Tasks
Translate-URL: https://translate.habitica.com/projects/habitica/tasks/ja/
2019-07-29 12:51:52 +02:00
そら 7be2003991 Translated using Weblate (Japanese)
Currently translated at 100.0% (218 of 218 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/ja/
2019-07-29 12:51:51 +02:00
そら b313bf06cd Translated using Weblate (Japanese)
Currently translated at 100.0% (57 of 57 strings)

Translation: Habitica/Spells
Translate-URL: https://translate.habitica.com/projects/habitica/spells/ja/
2019-07-29 12:51:49 +02:00
そら cb877e8866 Translated using Weblate (Japanese)
Currently translated at 100.0% (128 of 128 strings)

Translation: Habitica/Quests
Translate-URL: https://translate.habitica.com/projects/habitica/quests/ja/
2019-07-29 12:51:48 +02:00
そら ee33484bfb Translated using Weblate (Japanese)
Currently translated at 100.0% (27 of 27 strings)

Translation: Habitica/Rebirth
Translate-URL: https://translate.habitica.com/projects/habitica/rebirth/ja/
2019-07-29 12:51:47 +02:00
そら 51e3d247d0 Translated using Weblate (Japanese)
Currently translated at 100.0% (146 of 146 strings)

Translation: Habitica/Pets
Translate-URL: https://translate.habitica.com/projects/habitica/pets/ja/
2019-07-29 12:51:46 +02:00
そら d94c76e95b Translated using Weblate (Japanese)
Currently translated at 100.0% (170 of 170 strings)

Translation: Habitica/Npc
Translate-URL: https://translate.habitica.com/projects/habitica/npc/ja/
2019-07-29 12:51:44 +02:00
そら 243ffda643 Translated using Weblate (Japanese)
Currently translated at 100.0% (8 of 8 strings)

Translation: Habitica/Overview
Translate-URL: https://translate.habitica.com/projects/habitica/overview/ja/
2019-07-29 12:51:42 +02:00
そら c327c5a7ca Translated using Weblate (Japanese)
Currently translated at 100.0% (4 of 4 strings)

Translation: Habitica/Noscript
Translate-URL: https://translate.habitica.com/projects/habitica/noscript/ja/
2019-07-29 12:51:41 +02:00
そら ea7a029ef6 Translated using Weblate (Japanese)
Currently translated at 100.0% (66 of 66 strings)

Translation: Habitica/Messages
Translate-URL: https://translate.habitica.com/projects/habitica/messages/ja/
2019-07-29 12:51:41 +02:00
そら 8e7f559745 Translated using Weblate (Japanese)
Currently translated at 100.0% (12 of 12 strings)

Translation: Habitica/Merch
Translate-URL: https://translate.habitica.com/projects/habitica/merch/ja/
2019-07-29 12:51:39 +02:00
そら 0a413dde02 Translated using Weblate (Japanese)
Currently translated at 100.0% (31 of 31 strings)

Translation: Habitica/Maintenance
Translate-URL: https://translate.habitica.com/projects/habitica/maintenance/ja/
2019-07-29 12:51:38 +02:00
そら 251ec388e5 Translated using Weblate (Japanese)
Currently translated at 100.0% (157 of 157 strings)

Translation: Habitica/Limited
Translate-URL: https://translate.habitica.com/projects/habitica/limited/ja/
2019-07-29 12:51:37 +02:00
そら 2723394729 Translated using Weblate (Japanese)
Currently translated at 100.0% (27 of 27 strings)

Translation: Habitica/Loginincentives
Translate-URL: https://translate.habitica.com/projects/habitica/loginincentives/ja/
2019-07-29 12:51:36 +02:00
そら 119f79bdc8 Translated using Weblate (Japanese)
Currently translated at 100.0% (482 of 482 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/ja/
2019-07-29 12:51:35 +02:00
そら ba764cd367 Translated using Weblate (Japanese)
Currently translated at 100.0% (1809 of 1809 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/ja/
2019-07-29 12:51:34 +02:00
そら f516006f54 Translated using Weblate (Japanese)
Currently translated at 100.0% (293 of 293 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/ja/
2019-07-29 12:51:22 +02:00
そら ab2436e34e Translated using Weblate (Japanese)
Currently translated at 100.0% (332 of 332 strings)

Translation: Habitica/Front
Translate-URL: https://translate.habitica.com/projects/habitica/front/ja/
2019-07-29 12:51:20 +02:00
そら cf5169f3bb Translated using Weblate (Japanese)
Currently translated at 100.0% (56 of 56 strings)

Translation: Habitica/Faq
Translate-URL: https://translate.habitica.com/projects/habitica/faq/ja/
2019-07-29 12:51:19 +02:00
そら 0f2157cc43 Translated using Weblate (Japanese)
Currently translated at 100.0% (26 of 26 strings)

Translation: Habitica/Defaulttasks
Translate-URL: https://translate.habitica.com/projects/habitica/defaulttasks/ja/
2019-07-29 12:51:18 +02:00
そら e0d054eb14 Translated using Weblate (Japanese)
Currently translated at 100.0% (15 of 15 strings)

Translation: Habitica/Death
Translate-URL: https://translate.habitica.com/projects/habitica/death/ja/
2019-07-29 12:51:17 +02:00
akausa 5d294cffc6 Translated using Weblate (Japanese)
Currently translated at 100.0% (638 of 638 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/ja/
2019-07-29 12:51:16 +02:00
そら b61f408829 Translated using Weblate (Japanese)
Currently translated at 100.0% (638 of 638 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/ja/
2019-07-29 12:51:16 +02:00
そら 3cb9c43346 Translated using Weblate (Japanese)
Currently translated at 100.0% (126 of 126 strings)

Translation: Habitica/Communityguidelines
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/ja/
2019-07-29 12:51:14 +02:00
そら bef8970070 Translated using Weblate (Japanese)
Currently translated at 100.0% (341 of 341 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/ja/
2019-07-29 12:51:13 +02:00
そら 2e7932a7be Translated using Weblate (Japanese)
Currently translated at 100.0% (78 of 78 strings)

Translation: Habitica/Contrib
Translate-URL: https://translate.habitica.com/projects/habitica/contrib/ja/
2019-07-29 12:51:12 +02:00
そら 3ec7535709 Translated using Weblate (Japanese)
Currently translated at 100.0% (226 of 226 strings)

Translation: Habitica/Character
Translate-URL: https://translate.habitica.com/projects/habitica/character/ja/
2019-07-29 12:51:10 +02:00
そら 3d582509c5 Translated using Weblate (Japanese)
Currently translated at 100.0% (137 of 137 strings)

Translation: Habitica/Challenge
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/ja/
2019-07-29 12:51:09 +02:00
そら e9de1e0961 Translated using Weblate (Japanese)
Currently translated at 100.0% (431 of 431 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/ja/
2019-07-29 12:51:08 +02:00
そら 0ae5442c53 Translated using Weblate (Japanese)
Currently translated at 100.0% (206 of 206 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/ja/
2019-07-29 12:51:05 +02:00
Matteo Pagliazzi 517cff52d2 Translated using Weblate (Italian)
Currently translated at 100.0% (78 of 78 strings)

Translation: Habitica/Contrib
Translate-URL: https://translate.habitica.com/projects/habitica/contrib/it/
2019-07-29 12:51:04 +02:00
Riyad Firdaus 21ee4c431b Translated using Weblate (Indonesian)
Currently translated at 100.0% (226 of 226 strings)

Translation: Habitica/Character
Translate-URL: https://translate.habitica.com/projects/habitica/character/id/
2019-07-29 12:51:03 +02:00
Riyad Firdaus 7f9f43652d Translated using Weblate (Indonesian)
Currently translated at 95.3% (411 of 431 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/id/
2019-07-29 12:51:02 +02:00
Riyad Firdaus 99ec04f3b8 Translated using Weblate (Indonesian)
Currently translated at 100.0% (206 of 206 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/id/
2019-07-29 12:51:01 +02:00
Lilla Kovacs 25ecf0e07b Translated using Weblate (Hungarian)
Currently translated at 100.0% (157 of 157 strings)

Translation: Habitica/Limited
Translate-URL: https://translate.habitica.com/projects/habitica/limited/hu/
2019-07-29 12:51:00 +02:00
Ari Horesh cdb1036762 Translated using Weblate (Hebrew)
Currently translated at 90.0% (307 of 341 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/he/
2019-07-29 12:50:59 +02:00
Tobias Welti ce0b960578 Translated using Weblate (German)
Currently translated at 100.0% (36 of 36 strings)

Translation: Habitica/Loadingscreentips
Translate-URL: https://translate.habitica.com/projects/habitica/loadingscreentips/de/
2019-07-29 12:50:58 +02:00
Tobias Welti c60d570517 Translated using Weblate (German)
Currently translated at 100.0% (211 of 211 strings)

Translation: Habitica/Tasks
Translate-URL: https://translate.habitica.com/projects/habitica/tasks/de/
2019-07-29 12:50:56 +02:00
Tobias Welti 72fc7cc83b Translated using Weblate (German)
Currently translated at 100.0% (218 of 218 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/de/
2019-07-29 12:50:55 +02:00
Tobias Welti e3200d15e7 Translated using Weblate (German)
Currently translated at 100.0% (128 of 128 strings)

Translation: Habitica/Quests
Translate-URL: https://translate.habitica.com/projects/habitica/quests/de/
2019-07-29 12:50:54 +02:00
Tobias Welti 04f30e0ebd Translated using Weblate (German)
Currently translated at 100.0% (146 of 146 strings)

Translation: Habitica/Pets
Translate-URL: https://translate.habitica.com/projects/habitica/pets/de/
2019-07-29 12:50:53 +02:00
Tobias Welti 02c3789b5d Translated using Weblate (German)
Currently translated at 100.0% (66 of 66 strings)

Translation: Habitica/Messages
Translate-URL: https://translate.habitica.com/projects/habitica/messages/de/
2019-07-29 12:50:52 +02:00
Tobias Welti 8d21fa09e4 Translated using Weblate (German)
Currently translated at 100.0% (12 of 12 strings)

Translation: Habitica/Merch
Translate-URL: https://translate.habitica.com/projects/habitica/merch/de/
2019-07-29 12:50:51 +02:00
Tobias Welti 9e027d937d Translated using Weblate (German)
Currently translated at 100.0% (482 of 482 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/de/
2019-07-29 12:50:50 +02:00
Tobias Welti fc34012a09 Translated using Weblate (German)
Currently translated at 100.0% (1809 of 1809 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/de/
2019-07-29 12:50:47 +02:00
Tobias Welti bb20e92bb0 Translated using Weblate (German)
Currently translated at 100.0% (638 of 638 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/de/
2019-07-29 12:50:35 +02:00
Tobias Welti 9ed7d20a19 Translated using Weblate (German)
Currently translated at 100.0% (126 of 126 strings)

Translation: Habitica/Communityguidelines
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/de/
2019-07-29 12:50:34 +02:00
Tobias Welti a3a592039e Translated using Weblate (German)
Currently translated at 100.0% (78 of 78 strings)

Translation: Habitica/Contrib
Translate-URL: https://translate.habitica.com/projects/habitica/contrib/de/
2019-07-29 12:50:33 +02:00
Tobias Welti 82985d6a80 Translated using Weblate (German)
Currently translated at 100.0% (341 of 341 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/de/
2019-07-29 12:50:32 +02:00
Tobias Welti 1403c48c0d Translated using Weblate (German)
Currently translated at 100.0% (424 of 424 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/de/
2019-07-29 12:50:31 +02:00
Tobias Welti 3e25342012 Translated using Weblate (German)
Currently translated at 100.0% (7 of 7 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/de/
2019-07-29 12:50:30 +02:00
Blablux 0ef7d1fdba Translated using Weblate (French)
Currently translated at 100.0% (217 of 217 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/fr/
2019-07-29 12:50:28 +02:00
Blablux e066ad3ac8 Translated using Weblate (French)
Currently translated at 100.0% (8 of 8 strings)

Translation: Habitica/Overview
Translate-URL: https://translate.habitica.com/projects/habitica/overview/fr/
2019-07-29 12:50:27 +02:00
Blablux 6e0f7137a1 Translated using Weblate (French)
Currently translated at 100.0% (482 of 482 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/fr/
2019-07-29 12:50:26 +02:00
Blablux fad404da8d Translated using Weblate (French)
Currently translated at 100.0% (293 of 293 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/fr/
2019-07-29 12:50:25 +02:00
Blablux 818c76597f Translated using Weblate (French)
Currently translated at 100.0% (333 of 333 strings)

Translation: Habitica/Front
Translate-URL: https://translate.habitica.com/projects/habitica/front/fr/
2019-07-29 12:50:24 +02:00
Blablux 908a2db558 Translated using Weblate (French)
Currently translated at 100.0% (56 of 56 strings)

Translation: Habitica/Faq
Translate-URL: https://translate.habitica.com/projects/habitica/faq/fr/
2019-07-29 12:50:23 +02:00
Blablux 7df995436b Translated using Weblate (French)
Currently translated at 100.0% (15 of 15 strings)

Translation: Habitica/Death
Translate-URL: https://translate.habitica.com/projects/habitica/death/fr/
2019-07-29 12:50:21 +02:00
Clémence Herbin ccda342db9 Translated using Weblate (French)
Currently translated at 100.0% (15 of 15 strings)

Translation: Habitica/Death
Translate-URL: https://translate.habitica.com/projects/habitica/death/fr/
2019-07-29 12:50:21 +02:00
Blablux 2edc8662ad Translated using Weblate (French)
Currently translated at 100.0% (126 of 126 strings)

Translation: Habitica/Communityguidelines
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/fr/
2019-07-29 12:50:20 +02:00
Blablux d342f87489 Translated using Weblate (French)
Currently translated at 100.0% (78 of 78 strings)

Translation: Habitica/Contrib
Translate-URL: https://translate.habitica.com/projects/habitica/contrib/fr/
2019-07-29 12:50:19 +02:00
Blablux e29a568f2a Translated using Weblate (French)
Currently translated at 100.0% (226 of 226 strings)

Translation: Habitica/Character
Translate-URL: https://translate.habitica.com/projects/habitica/character/fr/
2019-07-29 12:50:18 +02:00
Blablux e5f19a6405 Translated using Weblate (French)
Currently translated at 100.0% (137 of 137 strings)

Translation: Habitica/Challenge
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/fr/
2019-07-29 12:50:17 +02:00
Blablux fb529f0d2b Translated using Weblate (French)
Currently translated at 100.0% (7 of 7 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/fr/
2019-07-29 12:50:14 +02:00
Blablux 21d1df3802 Translated using Weblate (French)
Currently translated at 100.0% (206 of 206 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/fr/
2019-07-29 12:50:13 +02:00
cTheDragons 9951ec5740 Translated using Weblate (English (United Kingdom))
Currently translated at 100.0% (146 of 146 strings)

Translation: Habitica/Pets
Translate-URL: https://translate.habitica.com/projects/habitica/pets/en_GB/
2019-07-29 12:50:12 +02:00
Caroline Casey cc0e5adf3a Translated using Weblate (English (United Kingdom))
Currently translated at 100.0% (170 of 170 strings)

Translation: Habitica/Npc
Translate-URL: https://translate.habitica.com/projects/habitica/npc/en_GB/
2019-07-29 12:50:11 +02:00
cTheDragons b05541b68c Translated using Weblate (English (United Kingdom))
Currently translated at 100.0% (157 of 157 strings)

Translation: Habitica/Limited
Translate-URL: https://translate.habitica.com/projects/habitica/limited/en_GB/
2019-07-29 12:50:10 +02:00
Clémence Herbin 06e734f44a Translated using Weblate (English (United Kingdom))
Currently translated at 100.0% (157 of 157 strings)

Translation: Habitica/Limited
Translate-URL: https://translate.habitica.com/projects/habitica/limited/en_GB/
2019-07-29 12:50:09 +02:00
cTheDragons 8dc17f57b6 Translated using Weblate (English (United Kingdom))
Currently translated at 100.0% (482 of 482 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/en_GB/
2019-07-29 12:50:08 +02:00
cTheDragons 95b7fc4f05 Translated using Weblate (English (United Kingdom))
Currently translated at 100.0% (341 of 341 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/en_GB/
2019-07-29 12:50:07 +02:00
Leep Deep 041e32aec8 Translated using Weblate (English (Pirate))
Currently translated at 100.0% (211 of 211 strings)

Translation: Habitica/Tasks
Translate-URL: https://translate.habitica.com/projects/habitica/tasks/en@pirate/
2019-07-29 12:50:07 +02:00
Caroline Casey 93771bc54d Translated using Weblate (English (Pirate))
Currently translated at 100.0% (146 of 146 strings)

Translation: Habitica/Pets
Translate-URL: https://translate.habitica.com/projects/habitica/pets/en@pirate/
2019-07-29 12:50:05 +02:00
Leep Deep e7949204fe Translated using Weblate (English (Pirate))
Currently translated at 100.0% (482 of 482 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/en@pirate/
2019-07-29 12:50:04 +02:00
Caroline Casey d0464ef12e Translated using Weblate (English (Pirate))
Currently translated at 100.0% (1767 of 1767 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/en@pirate/
2019-07-29 12:50:01 +02:00
Archinland 096ebf230a Translated using Weblate (English (Pirate))
Currently translated at 100.0% (1767 of 1767 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/en@pirate/
2019-07-29 12:50:01 +02:00
Caroline Casey c26ff95352 Translated using Weblate (English (Pirate))
Currently translated at 100.0% (638 of 638 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/en@pirate/
2019-07-29 12:50:00 +02:00
Asta Jensen 988e624ec3 Translated using Weblate (Danish)
Currently translated at 100.0% (36 of 36 strings)

Translation: Habitica/Loadingscreentips
Translate-URL: https://translate.habitica.com/projects/habitica/loadingscreentips/da/
2019-07-29 12:49:58 +02:00
Asta Jensen 0905e7edd3 Translated using Weblate (Danish)
Currently translated at 99.0% (216 of 218 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/da/
2019-07-29 12:49:58 +02:00
Asta Jensen 41e2a17ad2 Translated using Weblate (Danish)
Currently translated at 100.0% (57 of 57 strings)

Translation: Habitica/Spells
Translate-URL: https://translate.habitica.com/projects/habitica/spells/da/
2019-07-29 12:49:55 +02:00
Asta Jensen 01c6f63c0c Translated using Weblate (Danish)
Currently translated at 100.0% (128 of 128 strings)

Translation: Habitica/Quests
Translate-URL: https://translate.habitica.com/projects/habitica/quests/da/
2019-07-29 12:49:54 +02:00
Asta Jensen 4bb2147657 Translated using Weblate (Danish)
Currently translated at 99.3% (145 of 146 strings)

Translation: Habitica/Pets
Translate-URL: https://translate.habitica.com/projects/habitica/pets/da/
2019-07-29 12:49:53 +02:00
Asta Jensen b8bfee0eb5 Translated using Weblate (Danish)
Currently translated at 100.0% (8 of 8 strings)

Translation: Habitica/Overview
Translate-URL: https://translate.habitica.com/projects/habitica/overview/da/
2019-07-29 12:49:50 +02:00
Asta Jensen 2a37614688 Translated using Weblate (Danish)
Currently translated at 97.6% (166 of 170 strings)

Translation: Habitica/Npc
Translate-URL: https://translate.habitica.com/projects/habitica/npc/da/
2019-07-29 12:49:50 +02:00
Asta Jensen c66ba0cc17 Translated using Weblate (Danish)
Currently translated at 96.9% (64 of 66 strings)

Translation: Habitica/Messages
Translate-URL: https://translate.habitica.com/projects/habitica/messages/da/
2019-07-29 12:49:46 +02:00
Asta Jensen d6283b1b32 Translated using Weblate (Danish)
Currently translated at 100.0% (153 of 153 strings)

Translation: Habitica/Limited
Translate-URL: https://translate.habitica.com/projects/habitica/limited/da/
2019-07-29 12:49:45 +02:00
Asta Jensen 3cfb3042fa Translated using Weblate (Danish)
Currently translated at 99.7% (481 of 482 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/da/
2019-07-29 12:49:43 +02:00
Asta Jensen 00ecaf7a0d Translated using Weblate (Danish)
Currently translated at 100.0% (6 of 6 strings)

Translation: Habitica/Inventory
Translate-URL: https://translate.habitica.com/projects/habitica/inventory/da/
2019-07-29 12:49:42 +02:00
Asta Jensen f53aaf6060 Translated using Weblate (Danish)
Currently translated at 99.7% (1804 of 1809 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/da/
2019-07-29 12:49:41 +02:00
Asta Jensen 85cacdfbfe Translated using Weblate (Danish)
Currently translated at 100.0% (293 of 293 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/da/
2019-07-29 12:49:26 +02:00
Asta Jensen af1956cc84 Translated using Weblate (Danish)
Currently translated at 100.0% (332 of 332 strings)

Translation: Habitica/Front
Translate-URL: https://translate.habitica.com/projects/habitica/front/da/
2019-07-29 12:49:25 +02:00
Asta Jensen 40e79ac282 Translated using Weblate (Danish)
Currently translated at 100.0% (56 of 56 strings)

Translation: Habitica/Faq
Translate-URL: https://translate.habitica.com/projects/habitica/faq/da/
2019-07-29 12:49:24 +02:00
Asta Jensen a5cb8f6deb Translated using Weblate (Danish)
Currently translated at 99.8% (637 of 638 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/da/
2019-07-29 12:49:22 +02:00
Asta Jensen 7007af70f2 Translated using Weblate (Danish)
Currently translated at 100.0% (126 of 126 strings)

Translation: Habitica/Communityguidelines
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/da/
2019-07-29 12:49:20 +02:00
Asta Jensen 7e865623de Translated using Weblate (Danish)
Currently translated at 100.0% (341 of 341 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/da/
2019-07-29 12:49:19 +02:00
Asta Jensen 73d308dc01 Translated using Weblate (Danish)
Currently translated at 100.0% (226 of 226 strings)

Translation: Habitica/Character
Translate-URL: https://translate.habitica.com/projects/habitica/character/da/
2019-07-29 12:49:13 +02:00
Asta Jensen f444fd280b Translated using Weblate (Danish)
Currently translated at 99.5% (205 of 206 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/da/
2019-07-29 12:49:12 +02:00
RedBug312 fa52606fca Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (170 of 170 strings)

Translation: Habitica/Npc
Translate-URL: https://translate.habitica.com/projects/habitica/npc/zh_Hant/
2019-07-29 12:49:10 +02:00
Wing Yan Jacqueline Tam 849fcff20e Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (8 of 8 strings)

Translation: Habitica/Overview
Translate-URL: https://translate.habitica.com/projects/habitica/overview/zh_Hant/
2019-07-29 12:49:09 +02:00
RedBug312 706ada8ff7 Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (31 of 31 strings)

Translation: Habitica/Maintenance
Translate-URL: https://translate.habitica.com/projects/habitica/maintenance/zh_Hant/
2019-07-29 12:49:08 +02:00
RedBug312 fc46c98336 Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (27 of 27 strings)

Translation: Habitica/Loginincentives
Translate-URL: https://translate.habitica.com/projects/habitica/loginincentives/zh_Hant/
2019-07-29 12:49:07 +02:00
RedBug312 d98fd66f57 Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (26 of 26 strings)

Translation: Habitica/Defaulttasks
Translate-URL: https://translate.habitica.com/projects/habitica/defaulttasks/zh_Hant/
2019-07-29 12:49:05 +02:00
RedBug312 0c76fd3b09 Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (126 of 126 strings)

Translation: Habitica/Communityguidelines
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/zh_Hant/
2019-07-29 12:49:05 +02:00
RedBug312 c4e23bdd7a Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (206 of 206 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/zh_Hant/
2019-07-29 12:49:02 +02:00
Sciuridae f0407a2051 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (36 of 36 strings)

Translation: Habitica/Loadingscreentips
Translate-URL: https://translate.habitica.com/projects/habitica/loadingscreentips/zh_Hans/
2019-07-29 12:49:01 +02:00
habitica-Doing02,wiki-Forenky 3c61e848a6 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (211 of 211 strings)

Translation: Habitica/Tasks
Translate-URL: https://translate.habitica.com/projects/habitica/tasks/zh_Hans/
2019-07-29 12:49:00 +02:00
SnowyBunny 4712204c82 Translated using Weblate (Chinese (Simplified))
Currently translated at 99.3% (145 of 146 strings)

Translation: Habitica/Pets
Translate-URL: https://translate.habitica.com/projects/habitica/pets/zh_Hans/
2019-07-29 12:48:59 +02:00
habitica-Doing02,wiki-Forenky 40422f1d03 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (153 of 153 strings)

Translation: Habitica/Limited
Translate-URL: https://translate.habitica.com/projects/habitica/limited/zh_Hans/
2019-07-29 12:48:58 +02:00
Sciuridae 4ea2cf1fd9 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (482 of 482 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/zh_Hans/
2019-07-29 12:48:57 +02:00
Caela Lias ca6728cc16 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (482 of 482 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/zh_Hans/
2019-07-29 12:48:57 +02:00
habitica-Doing02,wiki-Forenky a8ef3e22f0 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (1767 of 1767 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/zh_Hans/
2019-07-29 12:48:56 +02:00
Archinland 3f631b5937 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (1767 of 1767 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/zh_Hans/
2019-07-29 12:48:54 +02:00
habitica-Doing02,wiki-Forenky 090e5eea31 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (293 of 293 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/zh_Hans/
2019-07-29 12:48:52 +02:00
Sciuridae 93e88e0d06 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (293 of 293 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/zh_Hans/
2019-07-29 12:48:52 +02:00
habitica-Doing02,wiki-Forenky bd0b10180d Translated using Weblate (Chinese (Simplified))
Currently translated at 98.7% (630 of 638 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/zh_Hans/
2019-07-29 12:48:51 +02:00
Vege Ooi d608fa2cfa Translated using Weblate (Chinese (Simplified))
Currently translated at 98.7% (630 of 638 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/zh_Hans/
2019-07-29 12:48:50 +02:00
Sciuridae fba7b6dc0c Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (126 of 126 strings)

Translation: Habitica/Communityguidelines
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/zh_Hans/
2019-07-29 12:48:49 +02:00
habitica-Doing02,wiki-Forenky 14fe4f3c68 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (341 of 341 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/zh_Hans/
2019-07-29 12:48:48 +02:00
habitica-Doing02,wiki-Forenky cbb3d9bb86 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (78 of 78 strings)

Translation: Habitica/Contrib
Translate-URL: https://translate.habitica.com/projects/habitica/contrib/zh_Hans/
2019-07-29 12:48:46 +02:00
habitica-Doing02,wiki-Forenky 782f542035 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (226 of 226 strings)

Translation: Habitica/Character
Translate-URL: https://translate.habitica.com/projects/habitica/character/zh_Hans/
2019-07-29 12:48:45 +02:00
habitica-Doing02,wiki-Forenky e71e5ca5be Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (137 of 137 strings)

Translation: Habitica/Challenge
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/zh_Hans/
2019-07-29 12:48:44 +02:00
Sciuridae b8ae9f236c Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (424 of 424 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/zh_Hans/
2019-07-29 12:48:43 +02:00
habitica-Doing02,wiki-Forenky 31026a77ac Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (424 of 424 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/zh_Hans/
2019-07-29 12:48:42 +02:00
Sciuridae 3679d31a29 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (206 of 206 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/zh_Hans/
2019-07-29 12:48:41 +02:00
Sabe Jones 3a0aa4a1dc 4.105.1 2019-07-25 15:07:40 -05:00
Sabe Jones 7ffecf9206 Merge branch 'release' into develop 2019-07-25 15:00:01 -05:00
Sabe Jones ea20bd5070 4.105.0 2019-07-25 14:58:42 -05:00
Sabe Jones c98d7aae37 chore(sprites): compile 2019-07-25 14:58:18 -05:00
Sabe Jones 21d27d223c feat(content): Mystery Items July 2019 2019-07-25 14:58:07 -05:00
Matteo Pagliazzi ea13aece21 fix better tasks color 2019-07-25 21:47:58 +02:00
Sabe Jones b0bb537501 Merge branch 'release' into develop 2019-07-22 16:38:07 -05:00
Sabe Jones 75783345aa 4.104.2 2019-07-22 16:37:48 -05:00
Matteo Pagliazzi 931e2565b6 Use mandrill for password resets and usernames in emails (#11277)
* use mandrill for password resets

* fix email id

* fix username in emails and tests

* fix tests

* fix package-lock
2019-07-22 19:44:01 +02:00
Tressley Cahill 2f6584378d New colors updates (#11261)
* Update $purple-400

* Update colors.scss

Adds new colors and updates existing variables.
2019-07-22 19:00:39 +02:00
Matteo Pagliazzi 519a580b7b fix quests migration 2019-07-17 22:04:25 +02:00
Sabe Jones c99d62228f Merge branch 'release' into develop 2019-07-17 14:20:54 -05:00
Sabe Jones 581a40ffad 4.104.1 2019-07-17 14:20:35 -05:00
Sabe Jones 61c78355bd feat(content): enable Splashy Pals Bundle 2019-07-17 14:20:21 -05:00
Matteo Pagliazzi f82c93a9ec restore default for migration runner and respect unsubscription preferences 2019-07-17 21:07:43 +02:00
Matteo Pagliazzi e8c6340af8 add migration to restore scrolls 2019-07-17 20:48:48 +02:00
Matteo Pagliazzi 1e66cc9193 fix 2019-07-17 15:11:58 +02:00
Matteo Pagliazzi ef6d835391 fix 2019-07-17 14:34:03 +02:00
Matteo Pagliazzi 51f7ce3280 possible fix for script stuck script 2019-07-17 13:34:08 +02:00
Sabe Jones 2b7891e788 WIP(migration): then 2019-07-17 06:05:38 -05:00
Sabe Jones c640a648b9 WIP(migration): refactor group fix script 2019-07-17 10:42:08 +00:00
Sabe Jones 116f0446e5 fix(migrations): don't default to mystery items 2019-07-16 22:55:59 -05:00
Sabe Jones 065e8303df fix(groups): migration to restore disrupted user data 2019-07-16 20:23:05 -05:00
negue 74d3c9366a fix inbox: remove old map-method (#11269) 2019-07-16 22:50:12 +02:00
Frank Wang a3d452ab2a Translated using Weblate (Chinese (Traditional))
Currently translated at 96.4% (329 of 341 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/zh_Hant/
2019-07-16 19:12:59 +02:00
Liao Jie Ru 78a6fd4c70 Translated using Weblate (Chinese (Traditional))
Currently translated at 96.1% (328 of 341 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/zh_Hant/
2019-07-16 19:11:49 +02:00
negue c9a56e8f3e Performance/inbox paging (#11258)
* merge all changes to one commit of PR #11157 / #11226

* rename the new paged messages route

* rename event, move map-method to the Inbox schema, fix lint

* move `mapMessage`-call to `getUserInbox`

* revert schema.method back to a normal one
2019-07-15 11:25:22 +02:00
README Bot d28e1708c5 Add CodeTriage badge to habitrpg/habitrpg (#11205)
Adds a badge showing the number of people helping this repo on CodeTriage.

[![Open Source Helpers](https://www.codetriage.com/habitrpg/habitrpg/badges/users.svg)](https://www.codetriage.com/habitrpg/habitrpg)

## What is CodeTriage?

CodeTriage is an Open Source app that is designed to make contributing to Open Source projects easier. It works by sending subscribers a few open issues in their inbox. If subscribers get busy, there is an algorithm that backs off issue load so they do not get overwhelmed

[Read more about the CodeTriage project](https://www.codetriage.com/what).

## Why am I getting this PR?

Your project was picked by the human, @schneems. They selected it from the projects submitted to https://www.codetriage.com and hand edited the PR. How did your project get added to [CodeTriage](https://www.codetriage.com/what)? Roughly about 3 years ago, [joshsaintjacque](https://github.com/joshsaintjacque) added this project to CodeTriage in order to start contributing. Since then, 71 people have subscribed to help this repo.

## What does adding a badge accomplish?

Adding a badge invites people to help contribute to your project. It also lets developers know that others are invested in the longterm success and maintainability of the project.

You can see an example of a CodeTriage badge on these popular OSS READMEs:

- [![Email clients like GMAIL do not render SVG images](https://www.codetriage.com/rails/rails/badges/users.svg)](https://www.codetriage.com/rails/rails) https://github.com/rails/rails
- [![Email clients like GMAIL do not render SVG images](https://www.codetriage.com/crystal-lang/crystal/badges/users.svg)](https://www.codetriage.com/crystal-lang/crystal) https://github.com/crystal-lang/crystal

## Have a question or comment?

While I am a bot, this PR was manually reviewed and monitored by a human - @schneems. My job is writing commit messages and handling PR logistics.

If you have any questions, you can reply back to this PR and they will be answered by @schneems. If you do not want a badge right now, no worries, close the PR, you will not hear from me again.

Thanks for making your project Open Source! Any feedback is greatly appreciated.
2019-07-14 17:56:42 +02:00
Jack Cogdill e091072367 Enable keyboard shortcuts for autocomplete @username selection in chat (#11235)
* Chat autocomplete mouse hover styling

* Enable keyboard shortcuts for chat autocomplete

- Tab/down to select next
- Shift-tab/up to select previous
- Enter to make selection
- Escape to cancel
2019-07-14 17:55:50 +02:00
Alys 7b1032e898 improve appearance and wording in Hall's Reward User form for admins (#11248)
- adds Username
- changes placeholders to labels (subheadings) for consistency
- lists common and rare contributor titles to assist with keeping them consistent
- converts translated text to hard-coded English for consistency and to minimise work for translators
- removes unused locale strings
2019-07-12 17:14:34 +02:00
kogelnikp 855470ed25 changed order of attributes in equipment views (#11247) 2019-07-12 17:13:07 +02:00
Dominick Triola 631efd1adc Ask for confirmation when buying quests (#11251)
* Trigger confirmation modal for quests that have a currency of gems

https://github.com/HabitRPG/habitica/issues/11244

* Trigger purchase confirmation dialog for gold-purchasable quests

* Refactor to use confirmPurchase method
2019-07-12 17:09:49 +02:00
kogelnikp 2e227909a4 Fixed removing tasks from challenges (#11254)
* fixed missing event handler for removing tasks in challenges

* renamed test

* simplified challengeDetail test
2019-07-12 17:03:30 +02:00
greenkeeper[bot] e5c52625ad Update svg-url-loader to the latest version 🚀 (#11246)
* fix(package): update svg-url-loader to version 3.0.0

* chore(package): update lockfile package-lock.json
2019-07-12 16:35:27 +02:00
Scens 8f9f95fd84 Removed unnecessary "Equipment" sub-heading in Market. (#11237)
* Removed unnecessary sub-heading.

* Corrected the filter in the Market.
Now viewOptions keeps additional info about text to be in filter.
Categories array is no longer passed to filter component.
2019-07-12 16:23:14 +02:00
greenkeeper[bot] ff334d08e2 Update @google-cloud/trace-agent to the latest version 🚀 (#11208)
* fix(package): update @google-cloud/trace-agent to version 4.0.0

* chore(package): update lockfile package-lock.json
2019-07-12 16:12:49 +02:00
Frederik Ar. Mikkelsen 25b443a7c6 Fix task dropdown menu overflow (#11230) 2019-07-12 16:06:03 +02:00
reisturm 6724413ce9 Fixed styling bug on stats profile page. (#11187)
* Fixed styling bug on stats profile page.

* 24 px popover-content-titleonly
2019-07-12 16:02:33 +02:00
Forrest Hatfield 684a615a07 Allow admins to edit challenge tasks - fixes #8149 (#10658)
* Allow admins to edit challenges

* add test for admin creating a task in a challenge they don't own
2019-07-12 15:56:09 +02:00
Tressley Cahill babceaff42 Update "Add Task" button to diamond (#11214)
* Update $purple-400

* Add .diamond-btn

Swapped .rounded-btn for .diamond-btn
2019-07-12 15:36:14 +02:00
citrusella c29e9ddfc6 hes to nudibranchs in questsContent.json (#11211)
test
2019-07-09 16:30:13 +02:00
Jonathan Duncan 0cd0bcf874 Fixed typo. (#11219) 2019-07-09 16:28:12 +02:00
Alys 544a703df5 Minor fixes for apidocs and comments (#11249)
* improve comments for api.getUserChallenges

* clarify members parameter when creating test guilds

I was uncertain about this parameter and read the code to clarify it.
Reading a comment is easier. :)

* add "Custom Day Start time" to api route's title as it's the common name
2019-07-09 16:18:41 +02:00
greenkeeper[bot] 0b32692290 Update chromedriver to the latest version 🚀 (#11215)
* chore(package): update chromedriver to version 75.0.0

* chore(package): update lockfile package-lock.json
2019-07-09 12:16:50 +02:00
Matthew L d6a6104e1e Translated using Weblate (Chinese (Traditional))
Currently translated at 95.3% (325 of 341 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/zh_Hant/
2019-07-08 08:45:44 +02:00
Frank Wang 0fc13c4db3 Translated using Weblate (Chinese (Traditional))
Currently translated at 95.3% (325 of 341 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/zh_Hant/
2019-07-08 08:45:43 +02:00
Wing Yan Jacqueline Tam 97f672eafe Translated using Weblate (Spanish)
Currently translated at 100.0% (333 of 333 strings)

Translation: Habitica/Front
Translate-URL: https://translate.habitica.com/projects/habitica/front/es/
2019-07-03 22:53:52 +02:00
Gustavo Pantufla 11cad2ddc7 Translated using Weblate (Spanish)
Currently translated at 100.0% (431 of 431 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/es/
2019-07-03 04:27:09 +02:00
Kayla Marie Wainsztein Di Vito 2dbc9d8560 Translated using Weblate (Spanish)
Currently translated at 100.0% (431 of 431 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/es/
2019-07-03 04:27:09 +02:00
Sabe Jones 20fc233ad7 4.104.0 2019-07-02 13:30:46 -05:00
Sabe Jones adbe58a0da chore(sprites): compile 2019-07-02 13:30:41 -05:00
Sabe Jones b1b90d6dba feat(content): backgrounds and Armoire items 2019-07-02 13:30:33 -05:00
Sabe Jones ef29247526 4.103.1 2019-07-01 14:54:03 -05:00
Sabe Jones 1c59e78ea9 chore(sprites): compile 2019-07-01 14:53:50 -05:00
Sabe Jones 18e4e11a95 chore(news): Bailey
and extend a couple of items by 1 day
2019-07-01 14:53:40 -05:00
Clémence Herbin 1b174cd4cf Translated using Weblate (English (United Kingdom))
Currently translated at 99.7% (340 of 341 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/en_GB/
2019-06-29 23:19:03 +02:00
Gustavo Pantufla 88afd5f341 Translated using Weblate (Spanish)
Currently translated at 99.8% (1765 of 1767 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/es/
2019-06-26 18:08:09 +02:00
Scarlet Wolfe 666907fd6a Translated using Weblate (Spanish)
Currently translated at 99.8% (1765 of 1767 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/es/
2019-06-26 18:08:07 +02:00
SabreCat 82f34ed437 v4.103.0 2019-06-25 15:19:00 +00:00
SabreCat 3b268287b1 chore(sprites): compile 2019-06-25 15:14:56 +00:00
SabreCat 0e253fbb06 feat(content): mystery items 2019-06-25 15:13:08 +00:00
Sabe Jones 043696c225 4.102.0 2019-06-20 15:13:55 -05:00
Sabe Jones 69c2b0378f chore(sprites): compile 2019-06-20 15:13:27 -05:00
Sabe Jones fcfc44fd13 feat(content): Watery Potions
also fixes some sprite issues
2019-06-20 15:13:19 -05:00
Leep Deep 0d41768634 Translated using Weblate (Russian)
Currently translated at 99.1% (338 of 341 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/ru/
2019-06-13 07:13:51 +02:00
akausa 1d21f73e25 Translated using Weblate (Japanese)
Currently translated at 99.4% (339 of 341 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/ja/
2019-06-10 08:46:45 +02:00
そら 3fc4dc5272 Translated using Weblate (Japanese)
Currently translated at 99.4% (339 of 341 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/ja/
2019-06-10 08:46:44 +02:00
Aleksandra Bednarczyk 9681a8333e Translated using Weblate (Polish)
Currently translated at 91.4% (312 of 341 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/pl/
2019-05-31 09:01:42 +02:00
Michał C 4f5d8f8df7 Translated using Weblate (Polish)
Currently translated at 91.4% (312 of 341 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/pl/
2019-05-31 09:01:41 +02:00
Michał C a4961a71fe Translated using Weblate (Polish)
Currently translated at 99.4% (1758 of 1767 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/pl/
2019-05-23 14:37:46 +02:00
habitica-Doing02,wiki-Forenky 86c32ee136 Translated using Weblate (Chinese (Simplified))
Currently translated at 98.5% (629 of 638 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/zh_Hans/
2019-05-22 18:55:51 +02:00
Leep Deep 2f8ffae81c Translated using Weblate (Russian)
Currently translated at 96.4% (329 of 341 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/ru/
2019-05-12 05:03:06 +02:00
Yuri Mashukov ec028bc34e Translated using Weblate (Russian)
Currently translated at 96.4% (329 of 341 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/ru/
2019-05-12 05:03:06 +02:00
Maximilian Antipenko befed9560e Translated using Weblate (Russian)
Currently translated at 96.4% (329 of 341 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/ru/
2019-05-12 05:03:04 +02:00
Svenja Döring 902e31bf0c Translated using Weblate (German)
Currently translated at 100.0% (424 of 424 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/de/
2019-05-09 15:49:27 +02:00
Tobias Welti 140dc5184f Translated using Weblate (German)
Currently translated at 100.0% (424 of 424 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/de/
2019-05-09 15:49:27 +02:00
Svenja Döring 054594da4d Translated using Weblate (German)
Currently translated at 100.0% (424 of 424 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/de/
2019-05-09 15:48:50 +02:00
Maximilian Antipenko 15b0817745 Translated using Weblate (Russian)
Currently translated at 99.3% (1755 of 1767 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/ru/
2019-05-08 08:24:56 +02:00
6raKFtBRyBG 8866cf227b Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (226 of 226 strings)

Translation: Habitica/Character
Translate-URL: https://translate.habitica.com/projects/habitica/character/zh_Hans/
2019-05-02 03:45:52 +02:00
片板不得下海 32afadb0e4 Translated using Weblate (Chinese (Simplified))
Currently translated at 99.9% (1766 of 1767 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/zh_Hans/
2019-05-01 09:00:47 +02:00
Alan Van Brackel dbdb1af078 Translated using Weblate (German)
Currently translated at 100.0% (341 of 341 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/de/
2019-04-26 09:06:08 +02:00
Tobias Welti 401ae6581e Translated using Weblate (German)
Currently translated at 100.0% (341 of 341 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/de/
2019-04-26 09:06:07 +02:00
Alan Van Brackel c7c90826bb Translated using Weblate (German)
Currently translated at 98.8% (337 of 341 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/de/
2019-04-26 09:03:12 +02:00
Wing Yan Jacqueline Tam 8266edb94d Translated using Weblate (Spanish)
Currently translated at 99.1% (478 of 482 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/es/
2019-04-25 20:44:57 +02:00
Matheus Victor c48cf07dca Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (218 of 218 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/pt_BR/
2019-04-25 20:44:57 +02:00
Matheus Victor 121af97f78 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (146 of 146 strings)

Translation: Habitica/Pets
Translate-URL: https://translate.habitica.com/projects/habitica/pets/pt_BR/
2019-04-25 20:44:56 +02:00
Matheus Victor 82fb62ac84 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (170 of 170 strings)

Translation: Habitica/Npc
Translate-URL: https://translate.habitica.com/projects/habitica/npc/pt_BR/
2019-04-25 20:44:55 +02:00
Matheus Victor 030a23aea2 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (157 of 157 strings)

Translation: Habitica/Limited
Translate-URL: https://translate.habitica.com/projects/habitica/limited/pt_BR/
2019-04-25 20:44:55 +02:00
Matheus Victor 46ff43af2b Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (482 of 482 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/pt_BR/
2019-04-25 20:44:54 +02:00
Matheus Victor da4b35903a Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (1809 of 1809 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/pt_BR/
2019-04-25 20:44:54 +02:00
Matheus Victor f54917bf03 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (341 of 341 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/pt_BR/
2019-04-25 20:44:49 +02:00
Matheus Victor 60f00d7e6d Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (431 of 431 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/pt_BR/
2019-04-25 20:44:47 +02:00
Aleksandra Bednarczyk 941fd0eb34 Translated using Weblate (Polish)
Currently translated at 100.0% (57 of 57 strings)

Translation: Habitica/Spells
Translate-URL: https://translate.habitica.com/projects/habitica/spells/pl/
2019-04-25 20:44:47 +02:00
Aleksandra Bednarczyk 3fe439a6d9 Translated using Weblate (Polish)
Currently translated at 100.0% (170 of 170 strings)

Translation: Habitica/Npc
Translate-URL: https://translate.habitica.com/projects/habitica/npc/pl/
2019-04-25 20:44:46 +02:00
Aleksandra Bednarczyk 9a6aaa80c8 Translated using Weblate (Polish)
Currently translated at 100.0% (66 of 66 strings)

Translation: Habitica/Messages
Translate-URL: https://translate.habitica.com/projects/habitica/messages/pl/
2019-04-25 20:44:45 +02:00
Aleksandra Bednarczyk dbe5fecb25 Translated using Weblate (Polish)
Currently translated at 100.0% (157 of 157 strings)

Translation: Habitica/Limited
Translate-URL: https://translate.habitica.com/projects/habitica/limited/pl/
2019-04-25 20:44:45 +02:00
Aleksandra Bednarczyk 682a012e27 Translated using Weblate (Polish)
Currently translated at 99.3% (1755 of 1767 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/pl/
2019-04-25 20:44:44 +02:00
Aleksandra Bednarczyk 92231e6b4c Translated using Weblate (Polish)
Currently translated at 100.0% (293 of 293 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/pl/
2019-04-25 20:44:42 +02:00
Aleksandra Bednarczyk 4586d51818 Translated using Weblate (Polish)
Currently translated at 100.0% (333 of 333 strings)

Translation: Habitica/Front
Translate-URL: https://translate.habitica.com/projects/habitica/front/pl/
2019-04-25 20:44:42 +02:00
Aleksandra Bednarczyk e786a2572a Translated using Weblate (Polish)
Currently translated at 99.6% (636 of 638 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/pl/
2019-04-25 20:44:41 +02:00
Aleksandra Bednarczyk e2c73c5c41 Translated using Weblate (Polish)
Currently translated at 90.3% (308 of 341 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/pl/
2019-04-25 20:44:41 +02:00
Aleksandra Bednarczyk a57a157ebf Translated using Weblate (Polish)
Currently translated at 100.0% (137 of 137 strings)

Translation: Habitica/Challenge
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/pl/
2019-04-25 20:44:39 +02:00
Aleksandra Bednarczyk 33ecf36bf0 Translated using Weblate (Polish)
Currently translated at 100.0% (424 of 424 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/pl/
2019-04-25 20:44:39 +02:00
そら 18797162a0 Translated using Weblate (Japanese)
Currently translated at 100.0% (211 of 211 strings)

Translation: Habitica/Tasks
Translate-URL: https://translate.habitica.com/projects/habitica/tasks/ja/
2019-04-25 20:44:37 +02:00
そら cbd8301c03 Translated using Weblate (Japanese)
Currently translated at 99.0% (216 of 218 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/ja/
2019-04-25 20:44:36 +02:00
そら 3c8533b230 Translated using Weblate (Japanese)
Currently translated at 98.8% (168 of 170 strings)

Translation: Habitica/Npc
Translate-URL: https://translate.habitica.com/projects/habitica/npc/ja/
2019-04-25 20:44:35 +02:00
そら 1672456fba Translated using Weblate (Japanese)
Currently translated at 100.0% (8 of 8 strings)

Translation: Habitica/Overview
Translate-URL: https://translate.habitica.com/projects/habitica/overview/ja/
2019-04-25 20:44:35 +02:00
そら 319bd70015 Translated using Weblate (Japanese)
Currently translated at 97.4% (153 of 157 strings)

Translation: Habitica/Limited
Translate-URL: https://translate.habitica.com/projects/habitica/limited/ja/
2019-04-25 20:44:34 +02:00
そら 02d541e4fc Translated using Weblate (Japanese)
Currently translated at 100.0% (27 of 27 strings)

Translation: Habitica/Loginincentives
Translate-URL: https://translate.habitica.com/projects/habitica/loginincentives/ja/
2019-04-25 20:44:34 +02:00
そら c9bf5a1c1a Translated using Weblate (Japanese)
Currently translated at 96.4% (1745 of 1809 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/ja/
2019-04-25 20:44:33 +02:00
そら ea52fb72b4 Translated using Weblate (Japanese)
Currently translated at 99.6% (292 of 293 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/ja/
2019-04-25 20:44:32 +02:00
そら ec1864dce2 Translated using Weblate (Japanese)
Currently translated at 99.6% (331 of 332 strings)

Translation: Habitica/Front
Translate-URL: https://translate.habitica.com/projects/habitica/front/ja/
2019-04-25 20:44:32 +02:00
そら 96e8bfe469 Translated using Weblate (Japanese)
Currently translated at 100.0% (56 of 56 strings)

Translation: Habitica/Faq
Translate-URL: https://translate.habitica.com/projects/habitica/faq/ja/
2019-04-25 20:44:32 +02:00
そら 43889aefb0 Translated using Weblate (Japanese)
Currently translated at 100.0% (126 of 126 strings)

Translation: Habitica/Communityguidelines
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/ja/
2019-04-25 20:44:31 +02:00
akausa b674d2366f Translated using Weblate (Japanese)
Currently translated at 90.6% (309 of 341 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/ja/
2019-04-25 20:44:31 +02:00
そら cecd7118be Translated using Weblate (Japanese)
Currently translated at 100.0% (78 of 78 strings)

Translation: Habitica/Contrib
Translate-URL: https://translate.habitica.com/projects/habitica/contrib/ja/
2019-04-25 20:44:30 +02:00
そら 5e19526b55 Translated using Weblate (Japanese)
Currently translated at 100.0% (226 of 226 strings)

Translation: Habitica/Character
Translate-URL: https://translate.habitica.com/projects/habitica/character/ja/
2019-04-25 20:44:30 +02:00
Ari Horesh 76db47a83d Translated using Weblate (Hebrew)
Currently translated at 100.0% (218 of 218 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/he/
2019-04-25 20:44:29 +02:00
Ari Horesh d6a721d577 Translated using Weblate (Hebrew)
Currently translated at 98.4% (65 of 66 strings)

Translation: Habitica/Messages
Translate-URL: https://translate.habitica.com/projects/habitica/messages/he/
2019-04-25 20:44:28 +02:00
Ari Horesh 9eb02f9bdb Translated using Weblate (Hebrew)
Currently translated at 89.7% (306 of 341 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/he/
2019-04-25 20:44:28 +02:00
Ari Horesh a0886f5d04 Translated using Weblate (Hebrew)
Currently translated at 100.0% (431 of 431 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/he/
2019-04-25 20:44:27 +02:00
Tobias Welti 3db3c06528 Translated using Weblate (German)
Currently translated at 100.0% (36 of 36 strings)

Translation: Habitica/Loadingscreentips
Translate-URL: https://translate.habitica.com/projects/habitica/loadingscreentips/de/
2019-04-25 20:44:26 +02:00
Tobias Welti f94c42b4fa Translated using Weblate (German)
Currently translated at 99.5% (217 of 218 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/de/
2019-04-25 20:44:25 +02:00
Tobias Welti 29965dfc72 Translated using Weblate (German)
Currently translated at 100.0% (57 of 57 strings)

Translation: Habitica/Spells
Translate-URL: https://translate.habitica.com/projects/habitica/spells/de/
2019-04-25 20:44:25 +02:00
Tobias Welti 9ed094de56 Translated using Weblate (German)
Currently translated at 100.0% (170 of 170 strings)

Translation: Habitica/Npc
Translate-URL: https://translate.habitica.com/projects/habitica/npc/de/
2019-04-25 20:44:24 +02:00
Tobias Welti 7ffec31fde Translated using Weblate (German)
Currently translated at 95.4% (63 of 66 strings)

Translation: Habitica/Messages
Translate-URL: https://translate.habitica.com/projects/habitica/messages/de/
2019-04-25 20:44:24 +02:00
Tobias Welti 2911e65059 Translated using Weblate (German)
Currently translated at 100.0% (31 of 31 strings)

Translation: Habitica/Maintenance
Translate-URL: https://translate.habitica.com/projects/habitica/maintenance/de/
2019-04-25 20:44:23 +02:00
Tobias Welti c36d274867 Translated using Weblate (German)
Currently translated at 100.0% (27 of 27 strings)

Translation: Habitica/Loginincentives
Translate-URL: https://translate.habitica.com/projects/habitica/loginincentives/de/
2019-04-25 20:44:23 +02:00
Tobias Welti 00ce51961d Translated using Weblate (German)
Currently translated at 100.0% (157 of 157 strings)

Translation: Habitica/Limited
Translate-URL: https://translate.habitica.com/projects/habitica/limited/de/
2019-04-25 20:44:22 +02:00
Tobias Welti d300480cf9 Translated using Weblate (German)
Currently translated at 96.5% (1746 of 1809 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/de/
2019-04-25 20:44:22 +02:00
Tobias Welti e24fa5381b Translated using Weblate (German)
Currently translated at 100.0% (293 of 293 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/de/
2019-04-25 20:44:21 +02:00
Tobias Welti 6959b1836f Translated using Weblate (German)
Currently translated at 100.0% (332 of 332 strings)

Translation: Habitica/Front
Translate-URL: https://translate.habitica.com/projects/habitica/front/de/
2019-04-25 20:44:20 +02:00
Tobias Welti cd70eb0666 Translated using Weblate (German)
Currently translated at 100.0% (56 of 56 strings)

Translation: Habitica/Faq
Translate-URL: https://translate.habitica.com/projects/habitica/faq/de/
2019-04-25 20:44:19 +02:00
Tobias Welti 7cb92c773c Translated using Weblate (German)
Currently translated at 100.0% (26 of 26 strings)

Translation: Habitica/Defaulttasks
Translate-URL: https://translate.habitica.com/projects/habitica/defaulttasks/de/
2019-04-25 20:44:19 +02:00
Tobias Welti 624535c22a Translated using Weblate (German)
Currently translated at 100.0% (15 of 15 strings)

Translation: Habitica/Death
Translate-URL: https://translate.habitica.com/projects/habitica/death/de/
2019-04-25 20:44:18 +02:00
Tobias Welti 3cb9ef066b Translated using Weblate (German)
Currently translated at 99.6% (636 of 638 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/de/
2019-04-25 20:44:18 +02:00
Tobias Welti 1cfeb9642c Translated using Weblate (German)
Currently translated at 90.0% (307 of 341 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/de/
2019-04-25 20:44:17 +02:00
Tobias Welti b378b183af Translated using Weblate (German)
Currently translated at 100.0% (226 of 226 strings)

Translation: Habitica/Character
Translate-URL: https://translate.habitica.com/projects/habitica/character/de/
2019-04-25 20:44:16 +02:00
Tobias Welti b6af401d07 Translated using Weblate (German)
Currently translated at 100.0% (137 of 137 strings)

Translation: Habitica/Challenge
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/de/
2019-04-25 20:44:15 +02:00
Tobias Welti e74a6ffffe Translated using Weblate (German)
Currently translated at 100.0% (424 of 424 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/de/
2019-04-25 20:44:14 +02:00
Tobias Welti af9e7d9cf0 Translated using Weblate (German)
Currently translated at 100.0% (206 of 206 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/de/
2019-04-25 20:44:14 +02:00
Benoit Hetru 1197d85620 Translated using Weblate (French)
Currently translated at 100.0% (36 of 36 strings)

Translation: Habitica/Loadingscreentips
Translate-URL: https://translate.habitica.com/projects/habitica/loadingscreentips/fr/
2019-04-25 20:44:14 +02:00
Benoit Hetru 93cde287d9 Translated using Weblate (French)
Currently translated at 100.0% (211 of 211 strings)

Translation: Habitica/Tasks
Translate-URL: https://translate.habitica.com/projects/habitica/tasks/fr/
2019-04-25 20:44:13 +02:00
Benoit Hetru 039b57dee6 Translated using Weblate (French)
Currently translated at 100.0% (217 of 217 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/fr/
2019-04-25 20:44:12 +02:00
Benoit Hetru 0036d85928 Translated using Weblate (French)
Currently translated at 100.0% (57 of 57 strings)

Translation: Habitica/Spells
Translate-URL: https://translate.habitica.com/projects/habitica/spells/fr/
2019-04-25 20:44:12 +02:00
Benoit Hetru f639b30cf4 Translated using Weblate (French)
Currently translated at 100.0% (27 of 27 strings)

Translation: Habitica/Rebirth
Translate-URL: https://translate.habitica.com/projects/habitica/rebirth/fr/
2019-04-25 20:44:11 +02:00
Benoit Hetru 373714c2ae Translated using Weblate (French)
Currently translated at 100.0% (146 of 146 strings)

Translation: Habitica/Pets
Translate-URL: https://translate.habitica.com/projects/habitica/pets/fr/
2019-04-25 20:44:11 +02:00
Benoit Hetru 3e805409b2 Translated using Weblate (French)
Currently translated at 100.0% (170 of 170 strings)

Translation: Habitica/Npc
Translate-URL: https://translate.habitica.com/projects/habitica/npc/fr/
2019-04-25 20:44:10 +02:00
Benoit Hetru 2d5b9c28ff Translated using Weblate (French)
Currently translated at 100.0% (8 of 8 strings)

Translation: Habitica/Overview
Translate-URL: https://translate.habitica.com/projects/habitica/overview/fr/
2019-04-25 20:44:10 +02:00
Benoit Hetru ca13953708 Translated using Weblate (French)
Currently translated at 100.0% (4 of 4 strings)

Translation: Habitica/Noscript
Translate-URL: https://translate.habitica.com/projects/habitica/noscript/fr/
2019-04-25 20:44:09 +02:00
Benoit Hetru 77dbe63c28 Translated using Weblate (French)
Currently translated at 100.0% (66 of 66 strings)

Translation: Habitica/Messages
Translate-URL: https://translate.habitica.com/projects/habitica/messages/fr/
2019-04-25 20:44:09 +02:00
Benoit Hetru d885f08aeb Translated using Weblate (French)
Currently translated at 100.0% (157 of 157 strings)

Translation: Habitica/Limited
Translate-URL: https://translate.habitica.com/projects/habitica/limited/fr/
2019-04-25 20:44:08 +02:00
Benoit Hetru 823bd945ca Translated using Weblate (French)
Currently translated at 100.0% (482 of 482 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/fr/
2019-04-25 20:44:08 +02:00
Benoit Hetru 3f82d41f90 Translated using Weblate (French)
Currently translated at 100.0% (1767 of 1767 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/fr/
2019-04-25 20:44:07 +02:00
Benoit Hetru eeb19579fb Translated using Weblate (French)
Currently translated at 100.0% (56 of 56 strings)

Translation: Habitica/Faq
Translate-URL: https://translate.habitica.com/projects/habitica/faq/fr/
2019-04-25 20:44:06 +02:00
Benoit Hetru 1ab98ddf85 Translated using Weblate (French)
Currently translated at 100.0% (26 of 26 strings)

Translation: Habitica/Defaulttasks
Translate-URL: https://translate.habitica.com/projects/habitica/defaulttasks/fr/
2019-04-25 20:44:05 +02:00
Benoit Hetru e8e864203d Translated using Weblate (French)
Currently translated at 100.0% (126 of 126 strings)

Translation: Habitica/Communityguidelines
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/fr/
2019-04-25 20:44:05 +02:00
Benoit Hetru 3a88c1df9f Translated using Weblate (French)
Currently translated at 100.0% (341 of 341 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/fr/
2019-04-25 20:44:04 +02:00
Caroline Casey 567402e276 Translated using Weblate (English (Pirate))
Currently translated at 100.0% (217 of 217 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/en@pirate/
2019-04-25 20:44:03 +02:00
Caroline Casey aacf65f51b Translated using Weblate (English (Pirate))
Currently translated at 100.0% (128 of 128 strings)

Translation: Habitica/Quests
Translate-URL: https://translate.habitica.com/projects/habitica/quests/en@pirate/
2019-04-25 20:44:02 +02:00
Caroline Casey e5d8911eb4 Translated using Weblate (English (Pirate))
Currently translated at 100.0% (157 of 157 strings)

Translation: Habitica/Limited
Translate-URL: https://translate.habitica.com/projects/habitica/limited/en@pirate/
2019-04-25 20:44:01 +02:00
Caroline Casey a57a162b8e Translated using Weblate (English (Pirate))
Currently translated at 100.0% (482 of 482 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/en@pirate/
2019-04-25 20:44:00 +02:00
Caroline Casey 5b2330e2c8 Translated using Weblate (English (Pirate))
Currently translated at 100.0% (6 of 6 strings)

Translation: Habitica/Inventory
Translate-URL: https://translate.habitica.com/projects/habitica/inventory/en@pirate/
2019-04-25 20:44:00 +02:00
Caroline Casey e8af8096e0 Translated using Weblate (English (Pirate))
Currently translated at 100.0% (293 of 293 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/en@pirate/
2019-04-25 20:43:59 +02:00
Caroline Casey 7da80a0818 Translated using Weblate (English (Pirate))
Currently translated at 100.0% (333 of 333 strings)

Translation: Habitica/Front
Translate-URL: https://translate.habitica.com/projects/habitica/front/en@pirate/
2019-04-25 20:43:58 +02:00
Anna Kuznetsov d47e56e696 Translated using Weblate (English (Pirate))
Currently translated at 100.0% (638 of 638 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/en@pirate/
2019-04-25 20:43:57 +02:00
Caroline Casey 6dfbdc09b0 Translated using Weblate (English (Pirate))
Currently translated at 100.0% (126 of 126 strings)

Translation: Habitica/Communityguidelines
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/en@pirate/
2019-04-25 20:43:56 +02:00
Caroline Casey 50125fa2b9 Translated using Weblate (English (Pirate))
Currently translated at 100.0% (309 of 309 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/en@pirate/
2019-04-25 20:43:55 +02:00
Caroline Casey 986516e0d6 Translated using Weblate (English (Pirate))
Currently translated at 100.0% (424 of 424 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/en@pirate/
2019-04-25 20:43:55 +02:00
Anna Kuznetsov 2380c3c61d Translated using Weblate (English (Pirate))
Currently translated at 100.0% (206 of 206 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/en@pirate/
2019-04-25 20:43:53 +02:00
Caroline Casey e4a6003223 Translated using Weblate (English (Pirate))
Currently translated at 100.0% (206 of 206 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/en@pirate/
2019-04-25 20:43:53 +02:00
Asta Jensen 7657ab2c88 Translated using Weblate (Danish)
Currently translated at 100.0% (36 of 36 strings)

Translation: Habitica/Loadingscreentips
Translate-URL: https://translate.habitica.com/projects/habitica/loadingscreentips/da/
2019-04-25 20:43:52 +02:00
Asta Jensen e9fc738496 Translated using Weblate (Danish)
Currently translated at 100.0% (27 of 27 strings)

Translation: Habitica/Rebirth
Translate-URL: https://translate.habitica.com/projects/habitica/rebirth/da/
2019-04-25 20:43:52 +02:00
Asta Jensen 4250330412 Translated using Weblate (Danish)
Currently translated at 100.0% (146 of 146 strings)

Translation: Habitica/Pets
Translate-URL: https://translate.habitica.com/projects/habitica/pets/da/
2019-04-25 20:43:51 +02:00
Asta Jensen b4c471cd05 Translated using Weblate (Danish)
Currently translated at 96.9% (64 of 66 strings)

Translation: Habitica/Messages
Translate-URL: https://translate.habitica.com/projects/habitica/messages/da/
2019-04-25 20:43:51 +02:00
Asta Jensen 03f81b8e33 Translated using Weblate (Danish)
Currently translated at 100.0% (31 of 31 strings)

Translation: Habitica/Maintenance
Translate-URL: https://translate.habitica.com/projects/habitica/maintenance/da/
2019-04-25 20:43:50 +02:00
Asta Jensen 370f25a0a7 Translated using Weblate (Danish)
Currently translated at 99.7% (481 of 482 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/da/
2019-04-25 20:43:49 +02:00
Asta Jensen f3bab6436f Translated using Weblate (Danish)
Currently translated at 100.0% (1809 of 1809 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/da/
2019-04-25 20:43:45 +02:00
Asta Jensen 1753cbe26d Translated using Weblate (Danish)
Currently translated at 99.6% (292 of 293 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/da/
2019-04-25 20:43:37 +02:00
Asta Jensen 8f15b544d5 Translated using Weblate (Danish)
Currently translated at 100.0% (332 of 332 strings)

Translation: Habitica/Front
Translate-URL: https://translate.habitica.com/projects/habitica/front/da/
2019-04-25 20:43:36 +02:00
Asta Jensen 35466fb767 Translated using Weblate (Danish)
Currently translated at 100.0% (56 of 56 strings)

Translation: Habitica/Faq
Translate-URL: https://translate.habitica.com/projects/habitica/faq/da/
2019-04-25 20:43:34 +02:00
Asta Jensen 22dcbf6b85 Translated using Weblate (Danish)
Currently translated at 100.0% (126 of 126 strings)

Translation: Habitica/Communityguidelines
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/da/
2019-04-25 20:43:34 +02:00
Asta Jensen 9629cfce81 Translated using Weblate (Danish)
Currently translated at 100.0% (78 of 78 strings)

Translation: Habitica/Contrib
Translate-URL: https://translate.habitica.com/projects/habitica/contrib/da/
2019-04-25 20:43:33 +02:00
Asta Jensen c1054fc3bb Translated using Weblate (Danish)
Currently translated at 100.0% (226 of 226 strings)

Translation: Habitica/Character
Translate-URL: https://translate.habitica.com/projects/habitica/character/da/
2019-04-25 20:43:32 +02:00
Asta Jensen bfbcdfc3b7 Translated using Weblate (Danish)
Currently translated at 100.0% (137 of 137 strings)

Translation: Habitica/Challenge
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/da/
2019-04-25 20:43:31 +02:00
Asta Jensen 4a79576de0 Translated using Weblate (Danish)
Currently translated at 100.0% (431 of 431 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/da/
2019-04-25 20:43:30 +02:00
Asta Jensen ad3f11728e Translated using Weblate (Danish)
Currently translated at 100.0% (7 of 7 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/da/
2019-04-25 20:43:27 +02:00
Asta Jensen 079b45a3a4 Translated using Weblate (Danish)
Currently translated at 100.0% (206 of 206 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/da/
2019-04-25 20:43:27 +02:00
Matthew L f4f7ceb54c Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (146 of 146 strings)

Translation: Habitica/Pets
Translate-URL: https://translate.habitica.com/projects/habitica/pets/zh_Hant/
2019-04-25 20:43:26 +02:00
Wing Yan Jacqueline Tam abfd132a2a Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (170 of 170 strings)

Translation: Habitica/Npc
Translate-URL: https://translate.habitica.com/projects/habitica/npc/zh_Hant/
2019-04-25 20:43:26 +02:00
Wing Yan Jacqueline Tam ce8fd55d78 Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (31 of 31 strings)

Translation: Habitica/Maintenance
Translate-URL: https://translate.habitica.com/projects/habitica/maintenance/zh_Hant/
2019-04-25 20:43:25 +02:00
Wing Yan Jacqueline Tam a318819eb2 Translated using Weblate (Chinese (Traditional))
Currently translated at 98.7% (155 of 157 strings)

Translation: Habitica/Limited
Translate-URL: https://translate.habitica.com/projects/habitica/limited/zh_Hant/
2019-04-25 20:43:25 +02:00
Wing Yan Jacqueline Tam f49052a66b Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (1767 of 1767 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/zh_Hant/
2019-04-25 20:43:24 +02:00
片板不得下海 f8695f8101 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (153 of 153 strings)

Translation: Habitica/Limited
Translate-URL: https://translate.habitica.com/projects/habitica/limited/zh_Hans/
2019-04-25 20:43:23 +02:00
Sciuridae 07fe34fefd Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (27 of 27 strings)

Translation: Habitica/Loginincentives
Translate-URL: https://translate.habitica.com/projects/habitica/loginincentives/zh_Hans/
2019-04-25 20:43:23 +02:00
Sciuridae 0f9e4e37be Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (226 of 226 strings)

Translation: Habitica/Character
Translate-URL: https://translate.habitica.com/projects/habitica/character/zh_Hans/
2019-04-25 20:43:22 +02:00
JiPai 393587fa62 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (226 of 226 strings)

Translation: Habitica/Character
Translate-URL: https://translate.habitica.com/projects/habitica/character/zh_Hans/
2019-04-25 20:43:22 +02:00
JiPai beb1c5fd4c Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (137 of 137 strings)

Translation: Habitica/Challenge
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/zh_Hans/
2019-04-25 20:43:22 +02:00
JiPai 523bb7ce4d Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (424 of 424 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/zh_Hans/
2019-04-25 20:43:21 +02:00
Sciuridae a27f6c1c75 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (7 of 7 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/zh_Hans/
2019-04-25 20:43:20 +02:00
Svenja Döring a227c85097 Translated using Weblate (German)
Currently translated at 100.0% (424 of 424 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/de/
2019-04-18 23:21:37 +02:00
Caroline Casey 4b466a9889 Translated using Weblate (English (Pirate))
Currently translated at 100.0% (309 of 309 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/en@pirate/
2019-04-18 20:34:06 +02:00
Weblate 99b42679f5 Merge branch 'develop' of https://github.com/HabitRPG/habitica into develop 2019-04-18 20:23:52 +02:00
Caroline Casey 484ad8bb86 Translated using Weblate (English (Pirate))
Currently translated at 100.0% (309 of 309 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/en@pirate/
2019-04-18 20:10:31 +02:00
Max Lyashuk ff5d529bdf Translated using Weblate (Ukrainian)
Currently translated at 100.0% (211 of 211 strings)

Translation: Habitica/Tasks
Translate-URL: https://translate.habitica.com/projects/habitica/tasks/uk/
2019-04-18 20:09:51 +02:00
Anna Kuznetsov cc6871d80a Translated using Weblate (Russian)
Currently translated at 100.0% (211 of 211 strings)

Translation: Habitica/Tasks
Translate-URL: https://translate.habitica.com/projects/habitica/tasks/ru/
2019-04-18 20:09:50 +02:00
Caroline Casey 7252fe47a8 Translated using Weblate (English (United Kingdom))
Currently translated at 100.0% (211 of 211 strings)

Translation: Habitica/Tasks
Translate-URL: https://translate.habitica.com/projects/habitica/tasks/en_GB/
2019-04-18 20:09:49 +02:00
Caroline Casey a99b19dbb3 Translated using Weblate (English (Pirate))
Currently translated at 100.0% (211 of 211 strings)

Translation: Habitica/Tasks
Translate-URL: https://translate.habitica.com/projects/habitica/tasks/en@pirate/
2019-04-18 20:09:49 +02:00
Anna Kuznetsov 8165491d9b Translated using Weblate (English (Pirate))
Currently translated at 100.0% (211 of 211 strings)

Translation: Habitica/Tasks
Translate-URL: https://translate.habitica.com/projects/habitica/tasks/en@pirate/
2019-04-18 20:09:48 +02:00
Asta Jensen 9f1e8751ae Translated using Weblate (Danish)
Currently translated at 100.0% (211 of 211 strings)

Translation: Habitica/Tasks
Translate-URL: https://translate.habitica.com/projects/habitica/tasks/da/
2019-04-18 20:09:47 +02:00
Clive Lo 68a36b0960 Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (211 of 211 strings)

Translation: Habitica/Tasks
Translate-URL: https://translate.habitica.com/projects/habitica/tasks/zh_Hant/
2019-04-18 20:09:46 +02:00
Yu-Cheng Huang 8dadd9dcb1 Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (211 of 211 strings)

Translation: Habitica/Tasks
Translate-URL: https://translate.habitica.com/projects/habitica/tasks/zh_Hant/
2019-04-18 20:09:46 +02:00
JiPai 3f6b61ae7e Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (211 of 211 strings)

Translation: Habitica/Tasks
Translate-URL: https://translate.habitica.com/projects/habitica/tasks/zh_Hans/
2019-04-18 20:09:45 +02:00
Lucía García-Amorena d56a006a1a Translated using Weblate (Spanish)
Currently translated at 100.0% (217 of 217 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/es/
2019-04-18 20:09:45 +02:00
Anna Kuznetsov d6a03d17c7 Translated using Weblate (Russian)
Currently translated at 100.0% (217 of 217 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/ru/
2019-04-18 20:09:44 +02:00
Benoit Hetru 9524050e21 Translated using Weblate (French)
Currently translated at 100.0% (217 of 217 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/fr/
2019-04-18 20:09:43 +02:00
Caroline Casey 3204855710 Translated using Weblate (English (United Kingdom))
Currently translated at 100.0% (217 of 217 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/en_GB/
2019-04-18 20:09:43 +02:00
Caroline Casey 43b578a8f5 Translated using Weblate (English (Pirate))
Currently translated at 100.0% (217 of 217 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/en@pirate/
2019-04-18 20:09:42 +02:00
Yu-Cheng Huang ded4b65f58 Translated using Weblate (Chinese (Traditional))
Currently translated at 99.5% (216 of 217 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/zh_Hant/
2019-04-18 20:09:40 +02:00
JiPai a1a10ed410 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (217 of 217 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/zh_Hans/
2019-04-18 20:09:39 +02:00
Anna Kuznetsov 4faf0f416f Translated using Weblate (Russian)
Currently translated at 100.0% (57 of 57 strings)

Translation: Habitica/Spells
Translate-URL: https://translate.habitica.com/projects/habitica/spells/ru/
2019-04-18 20:09:38 +02:00
Benoit Hetru 2e6c188d62 Translated using Weblate (French)
Currently translated at 100.0% (57 of 57 strings)

Translation: Habitica/Spells
Translate-URL: https://translate.habitica.com/projects/habitica/spells/fr/
2019-04-18 20:09:37 +02:00
Caroline Casey 5e12f8abc9 Translated using Weblate (English (United Kingdom))
Currently translated at 100.0% (57 of 57 strings)

Translation: Habitica/Spells
Translate-URL: https://translate.habitica.com/projects/habitica/spells/en_GB/
2019-04-18 20:09:37 +02:00
Caroline Casey 2bb898ee8f Translated using Weblate (English (Pirate))
Currently translated at 100.0% (57 of 57 strings)

Translation: Habitica/Spells
Translate-URL: https://translate.habitica.com/projects/habitica/spells/en@pirate/
2019-04-18 20:09:36 +02:00
Yu-Cheng Huang 093f2a29d5 Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (57 of 57 strings)

Translation: Habitica/Spells
Translate-URL: https://translate.habitica.com/projects/habitica/spells/zh_Hant/
2019-04-18 20:09:35 +02:00
JiPai 799a3de587 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (57 of 57 strings)

Translation: Habitica/Spells
Translate-URL: https://translate.habitica.com/projects/habitica/spells/zh_Hans/
2019-04-18 20:09:35 +02:00
Anna Kuznetsov 018fc44b03 Translated using Weblate (English (Pirate))
Currently translated at 100.0% (27 of 27 strings)

Translation: Habitica/Rebirth
Translate-URL: https://translate.habitica.com/projects/habitica/rebirth/en@pirate/
2019-04-18 20:09:34 +02:00
Asta Jensen b788ba5c58 Translated using Weblate (Danish)
Currently translated at 100.0% (27 of 27 strings)

Translation: Habitica/Rebirth
Translate-URL: https://translate.habitica.com/projects/habitica/rebirth/da/
2019-04-18 20:09:34 +02:00
Yu-Cheng Huang 5ba12c7bfb Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (27 of 27 strings)

Translation: Habitica/Rebirth
Translate-URL: https://translate.habitica.com/projects/habitica/rebirth/zh_Hant/
2019-04-18 20:09:32 +02:00
JiPai 8a1a17a271 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (27 of 27 strings)

Translation: Habitica/Rebirth
Translate-URL: https://translate.habitica.com/projects/habitica/rebirth/zh_Hans/
2019-04-18 20:09:32 +02:00
Anna Kuznetsov de334b1b59 Translated using Weblate (Russian)
Currently translated at 100.0% (638 of 638 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/ru/
2019-04-18 20:09:31 +02:00
Benoit Hetru 53b94a9c5c Translated using Weblate (French)
Currently translated at 100.0% (638 of 638 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/fr/
2019-04-18 20:09:30 +02:00
Wariannem 6649767072 Translated using Weblate (French)
Currently translated at 100.0% (638 of 638 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/fr/
2019-04-18 20:09:30 +02:00
Caroline Casey 39d725762b Translated using Weblate (English (United Kingdom))
Currently translated at 100.0% (638 of 638 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/en_GB/
2019-04-18 20:09:29 +02:00
Caroline Casey 17e1eacc2b Translated using Weblate (English (Pirate))
Currently translated at 100.0% (638 of 638 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/en@pirate/
2019-04-18 20:09:28 +02:00
Clive Lo 702056e9c0 Translated using Weblate (Chinese (Traditional))
Currently translated at 99.6% (636 of 638 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/zh_Hant/
2019-04-18 20:09:26 +02:00
JiPai 793201524a Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (638 of 638 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/zh_Hans/
2019-04-18 20:09:25 +02:00
片板不得下海 25cc887426 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (638 of 638 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/zh_Hans/
2019-04-18 20:09:25 +02:00
Anna Kuznetsov 7f1d2b50f6 Translated using Weblate (Russian)
Currently translated at 100.0% (128 of 128 strings)

Translation: Habitica/Quests
Translate-URL: https://translate.habitica.com/projects/habitica/quests/ru/
2019-04-18 20:09:24 +02:00
Gilles Gisseleire 656e7087fc Translated using Weblate (French)
Currently translated at 100.0% (128 of 128 strings)

Translation: Habitica/Quests
Translate-URL: https://translate.habitica.com/projects/habitica/quests/fr/
2019-04-18 20:09:23 +02:00
Caroline Casey 2a79a581e0 Translated using Weblate (English (United Kingdom))
Currently translated at 100.0% (128 of 128 strings)

Translation: Habitica/Quests
Translate-URL: https://translate.habitica.com/projects/habitica/quests/en_GB/
2019-04-18 20:09:23 +02:00
Caroline Casey 8e702b0cd4 Translated using Weblate (English (Pirate))
Currently translated at 100.0% (128 of 128 strings)

Translation: Habitica/Quests
Translate-URL: https://translate.habitica.com/projects/habitica/quests/en@pirate/
2019-04-18 20:09:22 +02:00
Yu-Cheng Huang 6645a1fc5e Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (128 of 128 strings)

Translation: Habitica/Quests
Translate-URL: https://translate.habitica.com/projects/habitica/quests/zh_Hant/
2019-04-18 20:09:21 +02:00
JiPai 292389fb82 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (128 of 128 strings)

Translation: Habitica/Quests
Translate-URL: https://translate.habitica.com/projects/habitica/quests/zh_Hans/
2019-04-18 20:09:20 +02:00
Ksenia Evteeva 4fe56cc9c2 Translated using Weblate (Russian)
Currently translated at 100.0% (144 of 144 strings)

Translation: Habitica/Pets
Translate-URL: https://translate.habitica.com/projects/habitica/pets/ru/
2019-04-18 20:09:20 +02:00
Caroline Casey 483193dc14 Translated using Weblate (English (United Kingdom))
Currently translated at 100.0% (144 of 144 strings)

Translation: Habitica/Pets
Translate-URL: https://translate.habitica.com/projects/habitica/pets/en_GB/
2019-04-18 20:09:19 +02:00
Anna Kuznetsov c75f4ab403 Translated using Weblate (English (Pirate))
Currently translated at 100.0% (144 of 144 strings)

Translation: Habitica/Pets
Translate-URL: https://translate.habitica.com/projects/habitica/pets/en@pirate/
2019-04-18 20:09:19 +02:00
Clive Lo 8c1dd853f9 Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (144 of 144 strings)

Translation: Habitica/Pets
Translate-URL: https://translate.habitica.com/projects/habitica/pets/zh_Hant/
2019-04-18 20:09:18 +02:00
Yu-Cheng Huang 300c08b243 Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (144 of 144 strings)

Translation: Habitica/Pets
Translate-URL: https://translate.habitica.com/projects/habitica/pets/zh_Hant/
2019-04-18 20:09:17 +02:00
JiPai 39ea4c313f Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (144 of 144 strings)

Translation: Habitica/Pets
Translate-URL: https://translate.habitica.com/projects/habitica/pets/zh_Hans/
2019-04-18 20:09:17 +02:00
Anna Kuznetsov 7e93905819 Translated using Weblate (Russian)
Currently translated at 100.0% (8 of 8 strings)

Translation: Habitica/Overview
Translate-URL: https://translate.habitica.com/projects/habitica/overview/ru/
2019-04-18 20:09:16 +02:00
Caroline Casey 4499c3e0fc Translated using Weblate (English (Pirate))
Currently translated at 100.0% (8 of 8 strings)

Translation: Habitica/Overview
Translate-URL: https://translate.habitica.com/projects/habitica/overview/en@pirate/
2019-04-18 20:09:16 +02:00
JiPai 5f8ae8e26e Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (8 of 8 strings)

Translation: Habitica/Overview
Translate-URL: https://translate.habitica.com/projects/habitica/overview/zh_Hans/
2019-04-18 20:09:15 +02:00
Anna Kuznetsov 95891885c1 Translated using Weblate (Russian)
Currently translated at 100.0% (169 of 169 strings)

Translation: Habitica/Npc
Translate-URL: https://translate.habitica.com/projects/habitica/npc/ru/
2019-04-18 20:09:14 +02:00
Anna Kuznetsov 775f49b2fc Translated using Weblate (English (Pirate))
Currently translated at 100.0% (169 of 169 strings)

Translation: Habitica/Npc
Translate-URL: https://translate.habitica.com/projects/habitica/npc/en@pirate/
2019-04-18 20:09:14 +02:00
片板不得下海 55ef0310ff Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (169 of 169 strings)

Translation: Habitica/Npc
Translate-URL: https://translate.habitica.com/projects/habitica/npc/zh_Hans/
2019-04-18 20:09:12 +02:00
JiPai 5330955c0d Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (4 of 4 strings)

Translation: Habitica/Noscript
Translate-URL: https://translate.habitica.com/projects/habitica/noscript/zh_Hans/
2019-04-18 20:09:12 +02:00
Anna Kuznetsov d4b771ddf8 Translated using Weblate (Russian)
Currently translated at 100.0% (66 of 66 strings)

Translation: Habitica/Messages
Translate-URL: https://translate.habitica.com/projects/habitica/messages/ru/
2019-04-18 20:09:11 +02:00
Daria 04d9e1365d Translated using Weblate (Polish)
Currently translated at 98.4% (65 of 66 strings)

Translation: Habitica/Messages
Translate-URL: https://translate.habitica.com/projects/habitica/messages/pl/
2019-04-18 20:09:11 +02:00
Benoit Hetru 94871082a6 Translated using Weblate (French)
Currently translated at 100.0% (66 of 66 strings)

Translation: Habitica/Messages
Translate-URL: https://translate.habitica.com/projects/habitica/messages/fr/
2019-04-18 20:09:10 +02:00
Loïc df4f8728f3 Translated using Weblate (French)
Currently translated at 100.0% (66 of 66 strings)

Translation: Habitica/Messages
Translate-URL: https://translate.habitica.com/projects/habitica/messages/fr/
2019-04-18 20:09:10 +02:00
Caroline Casey 7646c156ad Translated using Weblate (English (United Kingdom))
Currently translated at 100.0% (66 of 66 strings)

Translation: Habitica/Messages
Translate-URL: https://translate.habitica.com/projects/habitica/messages/en_GB/
2019-04-18 20:09:09 +02:00
Anna Kuznetsov 7b7e4f9fa0 Translated using Weblate (English (Pirate))
Currently translated at 100.0% (66 of 66 strings)

Translation: Habitica/Messages
Translate-URL: https://translate.habitica.com/projects/habitica/messages/en@pirate/
2019-04-18 20:09:08 +02:00
Caroline Casey 1dde38340e Translated using Weblate (English (Pirate))
Currently translated at 100.0% (66 of 66 strings)

Translation: Habitica/Messages
Translate-URL: https://translate.habitica.com/projects/habitica/messages/en@pirate/
2019-04-18 20:09:08 +02:00
Asta Jensen 0641655738 Translated using Weblate (Danish)
Currently translated at 96.9% (64 of 66 strings)

Translation: Habitica/Messages
Translate-URL: https://translate.habitica.com/projects/habitica/messages/da/
2019-04-18 20:09:07 +02:00
Yu-Cheng Huang 2ab98d891b Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (66 of 66 strings)

Translation: Habitica/Messages
Translate-URL: https://translate.habitica.com/projects/habitica/messages/zh_Hant/
2019-04-18 20:09:07 +02:00
JiPai a57108e4c9 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (66 of 66 strings)

Translation: Habitica/Messages
Translate-URL: https://translate.habitica.com/projects/habitica/messages/zh_Hans/
2019-04-18 20:09:06 +02:00
片板不得下海 4e4394fc9c Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (66 of 66 strings)

Translation: Habitica/Messages
Translate-URL: https://translate.habitica.com/projects/habitica/messages/zh_Hans/
2019-04-18 20:09:06 +02:00
Caroline Casey bbadbdfc1c Translated using Weblate (English (Pirate))
Currently translated at 100.0% (12 of 12 strings)

Translation: Habitica/Merch
Translate-URL: https://translate.habitica.com/projects/habitica/merch/en@pirate/
2019-04-18 20:09:05 +02:00
Anna Kuznetsov 7f0f41d9f8 Translated using Weblate (Russian)
Currently translated at 100.0% (31 of 31 strings)

Translation: Habitica/Maintenance
Translate-URL: https://translate.habitica.com/projects/habitica/maintenance/ru/
2019-04-18 20:09:04 +02:00
Anna Kuznetsov 650681fcb3 Translated using Weblate (English (Pirate))
Currently translated at 100.0% (31 of 31 strings)

Translation: Habitica/Maintenance
Translate-URL: https://translate.habitica.com/projects/habitica/maintenance/en@pirate/
2019-04-18 20:09:04 +02:00
Caroline Casey b4bd129385 Translated using Weblate (English (Pirate))
Currently translated at 100.0% (31 of 31 strings)

Translation: Habitica/Maintenance
Translate-URL: https://translate.habitica.com/projects/habitica/maintenance/en@pirate/
2019-04-18 20:09:03 +02:00
Caroline Casey c281b35e05 Translated using Weblate (English (Pirate))
Currently translated at 100.0% (27 of 27 strings)

Translation: Habitica/Loginincentives
Translate-URL: https://translate.habitica.com/projects/habitica/loginincentives/en@pirate/
2019-04-18 20:09:02 +02:00
Asta Jensen 9306eb46c6 Translated using Weblate (Danish)
Currently translated at 100.0% (27 of 27 strings)

Translation: Habitica/Loginincentives
Translate-URL: https://translate.habitica.com/projects/habitica/loginincentives/da/
2019-04-18 20:09:01 +02:00
JiPai 4b7ba57839 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (27 of 27 strings)

Translation: Habitica/Loginincentives
Translate-URL: https://translate.habitica.com/projects/habitica/loginincentives/zh_Hans/
2019-04-18 20:09:01 +02:00
Caroline Casey 0ec8aa7ced Translated using Weblate (English (Pirate))
Currently translated at 100.0% (36 of 36 strings)

Translation: Habitica/Loadingscreentips
Translate-URL: https://translate.habitica.com/projects/habitica/loadingscreentips/en@pirate/
2019-04-18 20:09:00 +02:00
Yu-Cheng Huang 3a1f900402 Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (36 of 36 strings)

Translation: Habitica/Loadingscreentips
Translate-URL: https://translate.habitica.com/projects/habitica/loadingscreentips/zh_Hant/
2019-04-18 20:08:59 +02:00
JiPai be0254304e Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (36 of 36 strings)

Translation: Habitica/Loadingscreentips
Translate-URL: https://translate.habitica.com/projects/habitica/loadingscreentips/zh_Hans/
2019-04-18 20:08:59 +02:00
Anna Kuznetsov f0b3176cd6 Translated using Weblate (Russian)
Currently translated at 100.0% (153 of 153 strings)

Translation: Habitica/Limited
Translate-URL: https://translate.habitica.com/projects/habitica/limited/ru/
2019-04-18 20:08:58 +02:00
Asta Jensen 3d297bd2a6 Translated using Weblate (Danish)
Currently translated at 100.0% (153 of 153 strings)

Translation: Habitica/Limited
Translate-URL: https://translate.habitica.com/projects/habitica/limited/da/
2019-04-18 20:08:58 +02:00
片板不得下海 2fece57a4a Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (153 of 153 strings)

Translation: Habitica/Limited
Translate-URL: https://translate.habitica.com/projects/habitica/limited/zh_Hans/
2019-04-18 20:08:57 +02:00
JiPai db5749b92b Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (153 of 153 strings)

Translation: Habitica/Limited
Translate-URL: https://translate.habitica.com/projects/habitica/limited/zh_Hans/
2019-04-18 20:08:57 +02:00
Caroline Casey a6146ddba4 Translated using Weblate (English (Pirate))
Currently translated at 100.0% (6 of 6 strings)

Translation: Habitica/Inventory
Translate-URL: https://translate.habitica.com/projects/habitica/inventory/en@pirate/
2019-04-18 20:08:56 +02:00
JiPai c1ac43b332 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (6 of 6 strings)

Translation: Habitica/Inventory
Translate-URL: https://translate.habitica.com/projects/habitica/inventory/zh_Hans/
2019-04-18 20:08:56 +02:00
Anna Kuznetsov 6d3ce09c41 Translated using Weblate (Russian)
Currently translated at 100.0% (482 of 482 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/ru/
2019-04-18 20:08:55 +02:00
Daria 0a63d0efab Translated using Weblate (Polish)
Currently translated at 99.5% (480 of 482 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/pl/
2019-04-18 20:08:54 +02:00
そら 0ad1b4cf77 Translated using Weblate (Japanese)
Currently translated at 99.3% (479 of 482 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/ja/
2019-04-18 20:08:54 +02:00
Benoit Hetru 5a8a1a067e Translated using Weblate (French)
Currently translated at 100.0% (482 of 482 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/fr/
2019-04-18 20:08:53 +02:00
Caroline Casey 7da9cc61a0 Translated using Weblate (English (United Kingdom))
Currently translated at 100.0% (482 of 482 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/en_GB/
2019-04-18 20:08:53 +02:00
Caroline Casey 105e695568 Translated using Weblate (English (Pirate))
Currently translated at 100.0% (482 of 482 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/en@pirate/
2019-04-18 20:08:52 +02:00
Yu-Cheng Huang a2e6cdb9cc Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (482 of 482 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/zh_Hant/
2019-04-18 20:08:50 +02:00
JiPai 7fe0c0e0a5 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (482 of 482 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/zh_Hans/
2019-04-18 20:08:48 +02:00
Anna Kuznetsov 99a599e66a Translated using Weblate (Russian)
Currently translated at 100.0% (293 of 293 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/ru/
2019-04-18 20:08:47 +02:00
Daria 741ec3f462 Translated using Weblate (Polish)
Currently translated at 100.0% (293 of 293 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/pl/
2019-04-18 20:08:47 +02:00
そら 8a5cb47ca6 Translated using Weblate (Japanese)
Currently translated at 99.6% (292 of 293 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/ja/
2019-04-18 20:08:46 +02:00
Benoit Hetru 7dbe23abbf Translated using Weblate (French)
Currently translated at 100.0% (293 of 293 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/fr/
2019-04-18 20:08:46 +02:00
Caroline Casey 93ef9b4092 Translated using Weblate (English (United Kingdom))
Currently translated at 100.0% (293 of 293 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/en_GB/
2019-04-18 20:08:45 +02:00
Caroline Casey 3bd3dc9dc9 Translated using Weblate (English (Pirate))
Currently translated at 100.0% (293 of 293 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/en@pirate/
2019-04-18 20:08:45 +02:00
Yu-Cheng Huang 793f17d3f8 Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (293 of 293 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/zh_Hant/
2019-04-18 20:08:44 +02:00
片板不得下海 9b41108f6d Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (293 of 293 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/zh_Hans/
2019-04-18 20:08:43 +02:00
JiPai f765234fd1 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (293 of 293 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/zh_Hans/
2019-04-18 20:08:43 +02:00
Lucía García-Amorena 94b4f254b2 Translated using Weblate (Spanish)
Currently translated at 99.4% (1757 of 1767 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/es/
2019-04-18 20:08:42 +02:00
Анастасия Минченкова bd8b884d1f Translated using Weblate (Russian)
Currently translated at 99.3% (1755 of 1767 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/ru/
2019-04-18 20:08:41 +02:00
Maximilian Antipenko 54a080ac32 Translated using Weblate (Russian)
Currently translated at 99.3% (1755 of 1767 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/ru/
2019-04-18 20:08:40 +02:00
Anna Kuznetsov 51d1c012d6 Translated using Weblate (Russian)
Currently translated at 99.3% (1755 of 1767 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/ru/
2019-04-18 20:08:40 +02:00
Daria b7e7827555 Translated using Weblate (Polish)
Currently translated at 99.0% (1751 of 1767 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/pl/
2019-04-18 20:08:39 +02:00
Benoit Hetru dcfd0f73ef Translated using Weblate (French)
Currently translated at 100.0% (1767 of 1767 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/fr/
2019-04-18 20:08:38 +02:00
Caroline Casey 6d6a10aacd Translated using Weblate (English (United Kingdom))
Currently translated at 100.0% (1767 of 1767 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/en_GB/
2019-04-18 20:08:35 +02:00
Caroline Casey 47742f2f83 Translated using Weblate (English (Pirate))
Currently translated at 100.0% (1767 of 1767 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/en@pirate/
2019-04-18 20:08:32 +02:00
Clive Lo 2959fb274a Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (1767 of 1767 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/zh_Hant/
2019-04-18 20:08:27 +02:00
Yu-Cheng Huang 7538978f9f Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (1767 of 1767 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/zh_Hant/
2019-04-18 20:08:26 +02:00
JiPai ade59b1195 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (1767 of 1767 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/zh_Hans/
2019-04-18 20:08:23 +02:00
Cynthia Wang e8348d47ee Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (1767 of 1767 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/zh_Hans/
2019-04-18 20:08:23 +02:00
片板不得下海 0f3ec0c0ce Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (1767 of 1767 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/zh_Hans/
2019-04-18 20:08:22 +02:00
Lucía García-Amorena 0f18b1dd1a Translated using Weblate (Spanish)
Currently translated at 100.0% (333 of 333 strings)

Translation: Habitica/Front
Translate-URL: https://translate.habitica.com/projects/habitica/front/es/
2019-04-18 20:08:21 +02:00
Richard Popeliis 2ed381e59b Translated using Weblate (Slovak)
Currently translated at 99.6% (332 of 333 strings)

Translation: Habitica/Front
Translate-URL: https://translate.habitica.com/projects/habitica/front/sk/
2019-04-18 20:08:21 +02:00
Anna Kuznetsov 4778fe3f0e Translated using Weblate (Russian)
Currently translated at 100.0% (333 of 333 strings)

Translation: Habitica/Front
Translate-URL: https://translate.habitica.com/projects/habitica/front/ru/
2019-04-18 20:08:20 +02:00
Daria 326a8d9e0c Translated using Weblate (Polish)
Currently translated at 100.0% (333 of 333 strings)

Translation: Habitica/Front
Translate-URL: https://translate.habitica.com/projects/habitica/front/pl/
2019-04-18 20:08:19 +02:00
Benoit Hetru a411104230 Translated using Weblate (French)
Currently translated at 100.0% (333 of 333 strings)

Translation: Habitica/Front
Translate-URL: https://translate.habitica.com/projects/habitica/front/fr/
2019-04-18 20:08:19 +02:00
Caroline Casey ddec97099b Translated using Weblate (English (United Kingdom))
Currently translated at 100.0% (333 of 333 strings)

Translation: Habitica/Front
Translate-URL: https://translate.habitica.com/projects/habitica/front/en_GB/
2019-04-18 20:08:18 +02:00
Caroline Casey 0c5ad71932 Translated using Weblate (English (Pirate))
Currently translated at 100.0% (333 of 333 strings)

Translation: Habitica/Front
Translate-URL: https://translate.habitica.com/projects/habitica/front/en@pirate/
2019-04-18 20:08:18 +02:00
Yu-Cheng Huang de279e33de Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (333 of 333 strings)

Translation: Habitica/Front
Translate-URL: https://translate.habitica.com/projects/habitica/front/zh_Hant/
2019-04-18 20:08:17 +02:00
JiPai a0dd797174 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (333 of 333 strings)

Translation: Habitica/Front
Translate-URL: https://translate.habitica.com/projects/habitica/front/zh_Hans/
2019-04-18 20:08:16 +02:00
Anna Kuznetsov 841ea175e6 Translated using Weblate (Russian)
Currently translated at 100.0% (56 of 56 strings)

Translation: Habitica/Faq
Translate-URL: https://translate.habitica.com/projects/habitica/faq/ru/
2019-04-18 20:08:15 +02:00
そら 8e8cde5578 Translated using Weblate (Japanese)
Currently translated at 100.0% (56 of 56 strings)

Translation: Habitica/Faq
Translate-URL: https://translate.habitica.com/projects/habitica/faq/ja/
2019-04-18 20:08:14 +02:00
Yu-Cheng Huang 378f199a6d Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (56 of 56 strings)

Translation: Habitica/Faq
Translate-URL: https://translate.habitica.com/projects/habitica/faq/zh_Hant/
2019-04-18 20:08:13 +02:00
片板不得下海 8b6918e738 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (56 of 56 strings)

Translation: Habitica/Faq
Translate-URL: https://translate.habitica.com/projects/habitica/faq/zh_Hans/
2019-04-18 20:08:13 +02:00
Caroline Casey 1c4e9113ed Translated using Weblate (English (Pirate))
Currently translated at 100.0% (26 of 26 strings)

Translation: Habitica/Defaulttasks
Translate-URL: https://translate.habitica.com/projects/habitica/defaulttasks/en@pirate/
2019-04-18 20:08:12 +02:00
Anna Kuznetsov 0a208d9948 Translated using Weblate (Russian)
Currently translated at 100.0% (15 of 15 strings)

Translation: Habitica/Death
Translate-URL: https://translate.habitica.com/projects/habitica/death/ru/
2019-04-18 20:08:11 +02:00
そら d26a8912fd Translated using Weblate (Japanese)
Currently translated at 100.0% (15 of 15 strings)

Translation: Habitica/Death
Translate-URL: https://translate.habitica.com/projects/habitica/death/ja/
2019-04-18 20:08:11 +02:00
Caroline Casey cca61359f8 Translated using Weblate (English (Pirate))
Currently translated at 100.0% (15 of 15 strings)

Translation: Habitica/Death
Translate-URL: https://translate.habitica.com/projects/habitica/death/en@pirate/
2019-04-18 20:08:10 +02:00
Yu-Cheng Huang 69c1effe2b Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (15 of 15 strings)

Translation: Habitica/Death
Translate-URL: https://translate.habitica.com/projects/habitica/death/zh_Hant/
2019-04-18 20:08:10 +02:00
Anna Kuznetsov 8c77346688 Translated using Weblate (Russian)
Currently translated at 100.0% (78 of 78 strings)

Translation: Habitica/Contrib
Translate-URL: https://translate.habitica.com/projects/habitica/contrib/ru/
2019-04-18 20:08:09 +02:00
Wariannem 22b93fedff Translated using Weblate (French)
Currently translated at 100.0% (78 of 78 strings)

Translation: Habitica/Contrib
Translate-URL: https://translate.habitica.com/projects/habitica/contrib/fr/
2019-04-18 20:08:09 +02:00
Anna Kuznetsov 4796651095 Translated using Weblate (English (Pirate))
Currently translated at 100.0% (78 of 78 strings)

Translation: Habitica/Contrib
Translate-URL: https://translate.habitica.com/projects/habitica/contrib/en@pirate/
2019-04-18 20:08:08 +02:00
Yu-Cheng Huang 3c141b9e63 Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (78 of 78 strings)

Translation: Habitica/Contrib
Translate-URL: https://translate.habitica.com/projects/habitica/contrib/zh_Hant/
2019-04-18 20:08:07 +02:00
JiPai f6a2d4a8ae Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (78 of 78 strings)

Translation: Habitica/Contrib
Translate-URL: https://translate.habitica.com/projects/habitica/contrib/zh_Hans/
2019-04-18 20:08:07 +02:00
Lucía García-Amorena 250fb0ae33 Translated using Weblate (Spanish)
Currently translated at 100.0% (309 of 309 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/es/
2019-04-18 20:08:06 +02:00
Anna Kuznetsov b7eb9e07e5 Translated using Weblate (Russian)
Currently translated at 100.0% (309 of 309 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/ru/
2019-04-18 20:08:06 +02:00
Benoit Hetru 9fa414b3a3 Translated using Weblate (French)
Currently translated at 100.0% (309 of 309 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/fr/
2019-04-18 20:08:05 +02:00
Caroline Casey d3e1e65d82 Translated using Weblate (English (United Kingdom))
Currently translated at 100.0% (309 of 309 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/en_GB/
2019-04-18 20:08:04 +02:00
Caroline Casey 30b67bfb2e Translated using Weblate (English (Pirate))
Currently translated at 100.0% (309 of 309 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/en@pirate/
2019-04-18 20:08:04 +02:00
Yu-Cheng Huang 0aef4e52e4 Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (309 of 309 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/zh_Hant/
2019-04-18 20:08:03 +02:00
JiPai 73845b1bc1 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (309 of 309 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/zh_Hans/
2019-04-18 20:08:02 +02:00
Anna Kuznetsov f93e6983c8 Translated using Weblate (Russian)
Currently translated at 100.0% (126 of 126 strings)

Translation: Habitica/Communityguidelines
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/ru/
2019-04-18 20:08:01 +02:00
Ksenia Evteeva 28bbcb59a8 Translated using Weblate (Russian)
Currently translated at 100.0% (126 of 126 strings)

Translation: Habitica/Communityguidelines
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/ru/
2019-04-18 20:08:01 +02:00
そら 04d55687e9 Translated using Weblate (Japanese)
Currently translated at 100.0% (126 of 126 strings)

Translation: Habitica/Communityguidelines
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/ja/
2019-04-18 20:08:00 +02:00
Caroline Casey 431480f751 Translated using Weblate (English (United Kingdom))
Currently translated at 100.0% (126 of 126 strings)

Translation: Habitica/Communityguidelines
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/en_GB/
2019-04-18 20:08:00 +02:00
Anna Kuznetsov ea8e17592d Translated using Weblate (English (Pirate))
Currently translated at 100.0% (126 of 126 strings)

Translation: Habitica/Communityguidelines
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/en@pirate/
2019-04-18 20:07:59 +02:00
Asta Jensen 9bf0338869 Translated using Weblate (Danish)
Currently translated at 100.0% (126 of 126 strings)

Translation: Habitica/Communityguidelines
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/da/
2019-04-18 20:07:58 +02:00
Yu-Cheng Huang dd7c3dae74 Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (126 of 126 strings)

Translation: Habitica/Communityguidelines
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/zh_Hant/
2019-04-18 20:07:57 +02:00
JiPai fbfa8a310c Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (126 of 126 strings)

Translation: Habitica/Communityguidelines
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/zh_Hans/
2019-04-18 20:07:57 +02:00
片板不得下海 e3aef1bda0 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (126 of 126 strings)

Translation: Habitica/Communityguidelines
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/zh_Hans/
2019-04-18 20:07:56 +02:00
Anna Kuznetsov b75c01c6c1 Translated using Weblate (Russian)
Currently translated at 100.0% (226 of 226 strings)

Translation: Habitica/Character
Translate-URL: https://translate.habitica.com/projects/habitica/character/ru/
2019-04-18 20:07:56 +02:00
Wariannem dbfbda6d32 Translated using Weblate (French)
Currently translated at 100.0% (226 of 226 strings)

Translation: Habitica/Character
Translate-URL: https://translate.habitica.com/projects/habitica/character/fr/
2019-04-18 20:07:55 +02:00
Caroline Casey 5da61ffd75 Translated using Weblate (English (United Kingdom))
Currently translated at 100.0% (226 of 226 strings)

Translation: Habitica/Character
Translate-URL: https://translate.habitica.com/projects/habitica/character/en_GB/
2019-04-18 20:07:54 +02:00
Caroline Casey 8094580e79 Translated using Weblate (English (Pirate))
Currently translated at 100.0% (226 of 226 strings)

Translation: Habitica/Character
Translate-URL: https://translate.habitica.com/projects/habitica/character/en@pirate/
2019-04-18 20:07:54 +02:00
Yu-Cheng Huang 93fd208c09 Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (226 of 226 strings)

Translation: Habitica/Character
Translate-URL: https://translate.habitica.com/projects/habitica/character/zh_Hant/
2019-04-18 20:07:53 +02:00
JiPai 19dc8dec0f Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (226 of 226 strings)

Translation: Habitica/Character
Translate-URL: https://translate.habitica.com/projects/habitica/character/zh_Hans/
2019-04-18 20:07:52 +02:00
Anna Kuznetsov 3ae59f1ec7 Translated using Weblate (Russian)
Currently translated at 100.0% (137 of 137 strings)

Translation: Habitica/Challenge
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/ru/
2019-04-18 20:07:52 +02:00
Wariannem 1fe2f895d3 Translated using Weblate (French)
Currently translated at 100.0% (137 of 137 strings)

Translation: Habitica/Challenge
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/fr/
2019-04-18 20:07:51 +02:00
Caroline Casey 42230379f8 Translated using Weblate (English (United Kingdom))
Currently translated at 100.0% (137 of 137 strings)

Translation: Habitica/Challenge
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/en_GB/
2019-04-18 20:07:50 +02:00
Anna Kuznetsov fb5a492c7f Translated using Weblate (English (Pirate))
Currently translated at 100.0% (137 of 137 strings)

Translation: Habitica/Challenge
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/en@pirate/
2019-04-18 20:07:50 +02:00
Asta Jensen 595a01f040 Translated using Weblate (Danish)
Currently translated at 100.0% (137 of 137 strings)

Translation: Habitica/Challenge
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/da/
2019-04-18 20:07:49 +02:00
Yu-Cheng Huang 500a0a84dc Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (137 of 137 strings)

Translation: Habitica/Challenge
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/zh_Hant/
2019-04-18 20:07:48 +02:00
JiPai 45be4dd6ea Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (137 of 137 strings)

Translation: Habitica/Challenge
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/zh_Hans/
2019-04-18 20:07:47 +02:00
Max Lyashuk 41ff2cb444 Translated using Weblate (Ukrainian)
Currently translated at 97.4% (413 of 424 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/uk/
2019-04-18 20:07:47 +02:00
Lucía García-Amorena f42013d91b Translated using Weblate (Spanish)
Currently translated at 100.0% (424 of 424 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/es/
2019-04-18 20:07:46 +02:00
Ksenia Evteeva f2bf7c7dbf Translated using Weblate (Russian)
Currently translated at 100.0% (424 of 424 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/ru/
2019-04-18 20:07:45 +02:00
Anna Kuznetsov aecf063c55 Translated using Weblate (Russian)
Currently translated at 100.0% (424 of 424 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/ru/
2019-04-18 20:07:44 +02:00
Daria 772bbaf09d Translated using Weblate (Polish)
Currently translated at 97.6% (414 of 424 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/pl/
2019-04-18 20:07:44 +02:00
Bilingual Cat 2f81b4324a Translated using Weblate (Hungarian)
Currently translated at 96.6% (410 of 424 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/hu/
2019-04-18 20:07:43 +02:00
Svenja Döring c4162a5910 Translated using Weblate (German)
Currently translated at 100.0% (424 of 424 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/de/
2019-04-18 20:07:43 +02:00
Tobias Welti 40e8e1573c Translated using Weblate (German)
Currently translated at 100.0% (424 of 424 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/de/
2019-04-18 20:07:42 +02:00
Caroline Casey 8ae0f64b4d Translated using Weblate (English (United Kingdom))
Currently translated at 100.0% (424 of 424 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/en_GB/
2019-04-18 20:07:41 +02:00
Caroline Casey c8469cb1a3 Translated using Weblate (English (Pirate))
Currently translated at 100.0% (424 of 424 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/en@pirate/
2019-04-18 20:07:41 +02:00
Yu-Cheng Huang f0f90a3653 Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (424 of 424 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/zh_Hant/
2019-04-18 20:07:40 +02:00
片板不得下海 e89076af62 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (424 of 424 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/zh_Hans/
2019-04-18 20:07:38 +02:00
JiPai f42928ca44 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (424 of 424 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/zh_Hans/
2019-04-18 20:07:38 +02:00
Anna Kuznetsov 432b6bf2cd Translated using Weblate (English (Pirate))
Currently translated at 100.0% (7 of 7 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/en@pirate/
2019-04-18 20:07:36 +02:00
Caroline Casey 7f47ce0fbf Translated using Weblate (English (Pirate))
Currently translated at 100.0% (7 of 7 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/en@pirate/
2019-04-18 20:07:36 +02:00
Asta Jensen 1a4eef9817 Translated using Weblate (Danish)
Currently translated at 100.0% (7 of 7 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/da/
2019-04-18 20:07:35 +02:00
片板不得下海 9c7e2131a6 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (7 of 7 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/zh_Hans/
2019-04-18 20:07:34 +02:00
Max Lyashuk 271ed1f080 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (206 of 206 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/uk/
2019-04-18 20:07:34 +02:00
Richard Popeliis 30e40fa58d Translated using Weblate (Slovak)
Currently translated at 100.0% (206 of 206 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/sk/
2019-04-18 20:07:33 +02:00
Anna Kuznetsov 1866d1ccf8 Translated using Weblate (Russian)
Currently translated at 100.0% (206 of 206 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/ru/
2019-04-18 20:07:32 +02:00
Wariannem e8391638fa Translated using Weblate (French)
Currently translated at 100.0% (206 of 206 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/fr/
2019-04-18 20:07:32 +02:00
Caroline Casey 0cea9d255b Translated using Weblate (English (Pirate))
Currently translated at 100.0% (206 of 206 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/en@pirate/
2019-04-18 20:07:31 +02:00
Anna Kuznetsov b088a529f2 Translated using Weblate (English (Pirate))
Currently translated at 100.0% (206 of 206 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/en@pirate/
2019-04-18 20:07:30 +02:00
Yu-Cheng Huang e4f301deda Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (206 of 206 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/zh_Hant/
2019-04-18 20:07:29 +02:00
JiPai 6387b4f844 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (206 of 206 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/zh_Hans/
2019-04-18 20:07:28 +02:00
Lucía García-Amorena 05edec4492 Translated using Weblate (Spanish)
Currently translated at 100.0% (56 of 56 strings)

Translation: Habitica/Faq
Translate-URL: https://translate.habitica.com/projects/habitica/faq/es/
2019-04-18 09:33:19 +02:00
Lucía García-Amorena 2ccbbfcea8 Translated using Weblate (Spanish)
Currently translated at 100.0% (638 of 638 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/es/
2019-04-18 07:56:02 +02:00
Анастасия Минченкова 378f5922b9 Translated using Weblate (English (Pirate))
Currently translated at 100.0% (424 of 424 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/en@pirate/
2019-04-17 21:59:31 +02:00
Anna Kuznetsov 17d066fe9d Translated using Weblate (English (Pirate))
Currently translated at 100.0% (424 of 424 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/en@pirate/
2019-04-17 21:59:31 +02:00
Caroline Casey b6de9d2448 Translated using Weblate (English (Pirate))
Currently translated at 100.0% (424 of 424 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/en@pirate/
2019-04-17 21:59:30 +02:00
片板不得下海 222f1afd24 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (56 of 56 strings)

Translation: Habitica/Faq
Translate-URL: https://translate.habitica.com/projects/habitica/faq/zh_Hans/
2019-04-13 07:40:00 +02:00
JiPai 2706bdf5aa Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (56 of 56 strings)

Translation: Habitica/Faq
Translate-URL: https://translate.habitica.com/projects/habitica/faq/zh_Hans/
2019-04-13 07:40:00 +02:00
Ksenia Evteeva 560b6714f9 Translated using Weblate (Russian)
Currently translated at 100.0% (144 of 144 strings)

Translation: Habitica/Pets
Translate-URL: https://translate.habitica.com/projects/habitica/pets/ru/
2019-04-12 14:41:22 +02:00
Anna Kuznetsov 31f3a08945 Translated using Weblate (Russian)
Currently translated at 100.0% (144 of 144 strings)

Translation: Habitica/Pets
Translate-URL: https://translate.habitica.com/projects/habitica/pets/ru/
2019-04-12 14:41:22 +02:00
lucac 25e54f9632 Translated using Weblate (Chinese (Simplified))
Currently translated at 99.8% (637 of 638 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/zh_Hans/
2019-04-12 04:39:11 +02:00
Cynthia Wang 475217ff27 Translated using Weblate (Chinese (Simplified))
Currently translated at 99.8% (637 of 638 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/zh_Hans/
2019-04-12 04:39:11 +02:00
Anna Kuznetsov f5155039cf Translated using Weblate (Russian)
Currently translated at 100.0% (144 of 144 strings)

Translation: Habitica/Pets
Translate-URL: https://translate.habitica.com/projects/habitica/pets/ru/
2019-04-12 04:15:05 +02:00
Ksenia Evteeva 671d3652e3 Translated using Weblate (Russian)
Currently translated at 100.0% (144 of 144 strings)

Translation: Habitica/Pets
Translate-URL: https://translate.habitica.com/projects/habitica/pets/ru/
2019-04-12 04:15:04 +02:00
Ksenia Evteeva 86040fbc93 Translated using Weblate (Russian)
Currently translated at 100.0% (482 of 482 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/ru/
2019-04-12 04:03:45 +02:00
Anna Kuznetsov 9206be3c64 Translated using Weblate (Russian)
Currently translated at 100.0% (482 of 482 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/ru/
2019-04-12 04:03:45 +02:00
JiPai 695e0c4206 Translated using Weblate (Chinese (Simplified))
Currently translated at 99.8% (637 of 638 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/zh_Hans/
2019-04-11 17:41:08 +02:00
lucac b2426c5a14 Translated using Weblate (Chinese (Simplified))
Currently translated at 99.8% (637 of 638 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/zh_Hans/
2019-04-11 17:41:08 +02:00
Tobias Welti e158933ae4 Translated using Weblate (German)
Currently translated at 100.0% (424 of 424 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/de/
2019-04-11 10:11:48 +02:00
Svenja Döring de6005bdac Translated using Weblate (German)
Currently translated at 100.0% (424 of 424 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/de/
2019-04-11 10:11:48 +02:00
JiPai 83b24ffa19 Translated using Weblate (Chinese (Simplified))
Currently translated at 99.9% (1766 of 1767 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/zh_Hans/
2019-04-11 09:24:53 +02:00
lucac 6015e96f15 Translated using Weblate (Chinese (Simplified))
Currently translated at 99.9% (1766 of 1767 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/zh_Hans/
2019-04-11 09:24:49 +02:00
lucac df0d4b38b6 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (638 of 638 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/zh_Hans/
2019-04-11 08:33:17 +02:00
JiPai 45ed5f3748 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (638 of 638 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/zh_Hans/
2019-04-11 08:33:16 +02:00
lucac fba2f5330f Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (638 of 638 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/zh_Hans/
2019-04-11 08:31:50 +02:00
lucac f35fb3879b Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (638 of 638 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/zh_Hans/
2019-04-11 07:55:23 +02:00
LomoBlur caaaf3381d Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (638 of 638 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/zh_Hans/
2019-04-11 07:55:23 +02:00
Loïc d3a97946e3 Translated using Weblate (French)
Currently translated at 99.7% (423 of 424 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/fr/
2019-04-10 23:34:07 +02:00
LomoBlur b0c78734ca Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (169 of 169 strings)

Translation: Habitica/Npc
Translate-URL: https://translate.habitica.com/projects/habitica/npc/zh_Hans/
2019-04-10 12:21:13 +02:00
lucac b2b5ab714b Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (169 of 169 strings)

Translation: Habitica/Npc
Translate-URL: https://translate.habitica.com/projects/habitica/npc/zh_Hans/
2019-04-10 12:21:12 +02:00
LomoBlur c570a69b87 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (169 of 169 strings)

Translation: Habitica/Npc
Translate-URL: https://translate.habitica.com/projects/habitica/npc/zh_Hans/
2019-04-10 10:22:08 +02:00
LomoBlur 2ac1610173 Translated using Weblate (Chinese (Simplified))
Currently translated at 98.1% (416 of 424 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/zh_Hans/
2019-04-10 06:43:33 +02:00
lucac f6e72627c4 Translated using Weblate (Chinese (Simplified))
Currently translated at 98.1% (416 of 424 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/zh_Hans/
2019-04-10 06:43:33 +02:00
Il Mago 5f43d8ac2b Translated using Weblate (Italian)
Currently translated at 96.6% (410 of 424 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/it/
2019-04-09 21:21:22 +02:00
Weblate fe6a26bd87 Merge branch 'habitica/develop' into develop 2019-04-09 21:14:33 +02:00
Borja Alcalá 5cc2e6fe6a Translated using Weblate (Spanish)
Currently translated at 97.8% (415 of 424 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/es/
2019-04-09 20:43:06 +02:00
Geovane S Pansiere c4db75b585 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (211 of 211 strings)

Translation: Habitica/Tasks
Translate-URL: https://translate.habitica.com/projects/habitica/tasks/pt_BR/
2019-04-09 19:35:56 +02:00
Yuri Mashukov c0ae6eca18 Translated using Weblate (Russian)
Currently translated at 100.0% (217 of 217 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/ru/
2019-04-09 19:35:55 +02:00
Geovane S Pansiere 878242d8fd Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (217 of 217 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/pt_BR/
2019-04-09 19:35:55 +02:00
Geovane S Pansiere e6e93fa2c2 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (57 of 57 strings)

Translation: Habitica/Spells
Translate-URL: https://translate.habitica.com/projects/habitica/spells/pt_BR/
2019-04-09 19:35:54 +02:00
Geovane S Pansiere 666107e135 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (27 of 27 strings)

Translation: Habitica/Rebirth
Translate-URL: https://translate.habitica.com/projects/habitica/rebirth/pt_BR/
2019-04-09 19:35:54 +02:00
Yuri Mashukov 1868f60948 Translated using Weblate (Russian)
Currently translated at 100.0% (638 of 638 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/ru/
2019-04-09 19:35:53 +02:00
Geovane S Pansiere 6f464b884e Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (638 of 638 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/pt_BR/
2019-04-09 19:35:52 +02:00
Geovane S Pansiere a008f5a745 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (128 of 128 strings)

Translation: Habitica/Quests
Translate-URL: https://translate.habitica.com/projects/habitica/quests/pt_BR/
2019-04-09 19:35:51 +02:00
Geovane S Pansiere 9165e2cd6a Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (144 of 144 strings)

Translation: Habitica/Pets
Translate-URL: https://translate.habitica.com/projects/habitica/pets/pt_BR/
2019-04-09 19:35:51 +02:00
Geovane S Pansiere 825ea5297f Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (8 of 8 strings)

Translation: Habitica/Overview
Translate-URL: https://translate.habitica.com/projects/habitica/overview/pt_BR/
2019-04-09 19:35:50 +02:00
Geovane S Pansiere 6db7f99a3b Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (169 of 169 strings)

Translation: Habitica/Npc
Translate-URL: https://translate.habitica.com/projects/habitica/npc/pt_BR/
2019-04-09 19:35:49 +02:00
Yuri Mashukov b50e23ca2c Translated using Weblate (Russian)
Currently translated at 98.4% (65 of 66 strings)

Translation: Habitica/Messages
Translate-URL: https://translate.habitica.com/projects/habitica/messages/ru/
2019-04-09 19:35:49 +02:00
Geovane S Pansiere 703c3d91b3 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (66 of 66 strings)

Translation: Habitica/Messages
Translate-URL: https://translate.habitica.com/projects/habitica/messages/pt_BR/
2019-04-09 19:35:48 +02:00
Geovane S Pansiere 83a05d870c Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (27 of 27 strings)

Translation: Habitica/Loginincentives
Translate-URL: https://translate.habitica.com/projects/habitica/loginincentives/pt_BR/
2019-04-09 19:35:48 +02:00
Geovane S Pansiere 4f20972292 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (36 of 36 strings)

Translation: Habitica/Loadingscreentips
Translate-URL: https://translate.habitica.com/projects/habitica/loadingscreentips/pt_BR/
2019-04-09 19:35:47 +02:00
Geovane S Pansiere 1b35d4983a Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (153 of 153 strings)

Translation: Habitica/Limited
Translate-URL: https://translate.habitica.com/projects/habitica/limited/pt_BR/
2019-04-09 19:35:47 +02:00
Yuri Mashukov 452dc77dff Translated using Weblate (Russian)
Currently translated at 99.5% (480 of 482 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/ru/
2019-04-09 19:35:46 +02:00
Geovane S Pansiere 1783b11745 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (482 of 482 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/pt_BR/
2019-04-09 19:35:46 +02:00
Yuri Mashukov 74eeae6eee Translated using Weblate (Russian)
Currently translated at 99.6% (292 of 293 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/ru/
2019-04-09 19:35:45 +02:00
Geovane S Pansiere 3a7cd3c997 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (293 of 293 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/pt_BR/
2019-04-09 19:35:44 +02:00
Geovane S Pansiere b7f6ffa058 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (1767 of 1767 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/pt_BR/
2019-04-09 19:35:44 +02:00
Yuri Mashukov e1a1e13b5d Translated using Weblate (Russian)
Currently translated at 100.0% (333 of 333 strings)

Translation: Habitica/Front
Translate-URL: https://translate.habitica.com/projects/habitica/front/ru/
2019-04-09 19:35:41 +02:00
Geovane S Pansiere 9cbb87ed25 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (333 of 333 strings)

Translation: Habitica/Front
Translate-URL: https://translate.habitica.com/projects/habitica/front/pt_BR/
2019-04-09 19:35:40 +02:00
cTheDragons 11bca78f43 Translated using Weblate (English (United Kingdom))
Currently translated at 100.0% (333 of 333 strings)

Translation: Habitica/Front
Translate-URL: https://translate.habitica.com/projects/habitica/front/en_GB/
2019-04-09 19:35:39 +02:00
Geovane S Pansiere b6418bc755 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (56 of 56 strings)

Translation: Habitica/Faq
Translate-URL: https://translate.habitica.com/projects/habitica/faq/pt_BR/
2019-04-09 19:35:39 +02:00
Geovane S Pansiere 122a5085f9 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (26 of 26 strings)

Translation: Habitica/Defaulttasks
Translate-URL: https://translate.habitica.com/projects/habitica/defaulttasks/pt_BR/
2019-04-09 19:35:38 +02:00
Geovane S Pansiere cd2b6ab78b Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (15 of 15 strings)

Translation: Habitica/Death
Translate-URL: https://translate.habitica.com/projects/habitica/death/pt_BR/
2019-04-09 19:35:38 +02:00
Geovane S Pansiere 9b2804063b Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (78 of 78 strings)

Translation: Habitica/Contrib
Translate-URL: https://translate.habitica.com/projects/habitica/contrib/pt_BR/
2019-04-09 19:35:37 +02:00
Geovane S Pansiere 7a617346b8 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (309 of 309 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/pt_BR/
2019-04-09 19:35:37 +02:00
Geovane S Pansiere 02fa9ed4b9 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (126 of 126 strings)

Translation: Habitica/Communityguidelines
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/pt_BR/
2019-04-09 19:35:36 +02:00
Geovane S Pansiere 833991ba34 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (226 of 226 strings)

Translation: Habitica/Character
Translate-URL: https://translate.habitica.com/projects/habitica/character/pt_BR/
2019-04-09 19:35:36 +02:00
Geovane S Pansiere ae65b6f992 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (137 of 137 strings)

Translation: Habitica/Challenge
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/pt_BR/
2019-04-09 19:35:35 +02:00
Yuri Mashukov 88488c112c Translated using Weblate (Russian)
Currently translated at 100.0% (424 of 424 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/ru/
2019-04-09 19:35:34 +02:00
Geovane S Pansiere 8313dfccc8 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (424 of 424 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/pt_BR/
2019-04-09 19:35:34 +02:00
Geovane S Pansiere e240d6c3f0 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (206 of 206 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/pt_BR/
2019-04-09 19:35:32 +02:00
Weblate bbfa81e0c3 Translated using Weblate (German)
Currently translated at 100.0% (206 of 206 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/de/

Merge branch 'origin/develop' into Weblate.

Translated using Weblate (Russian)

Currently translated at 99.7% (1753 of 1757 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/ru/

Merge branch 'origin/develop' into Weblate.

Translated using Weblate (Russian)

Currently translated at 100.0% (309 of 309 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/ru/

Translated using Weblate (Portuguese (Brazil))

Currently translated at 98.8% (412 of 417 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/pt_BR/

Translated using Weblate (Russian)

Currently translated at 100.0% (169 of 169 strings)

Translation: Habitica/Npc
Translate-URL: https://translate.habitica.com/projects/habitica/npc/ru/

Translated using Weblate (Russian)

Currently translated at 99.7% (1753 of 1757 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/ru/

Translated using Weblate (Russian)

Currently translated at 100.0% (153 of 153 strings)

Translation: Habitica/Limited
Translate-URL: https://translate.habitica.com/projects/habitica/limited/ru/

Translated using Weblate (Russian)

Currently translated at 99.7% (1753 of 1757 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/ru/

Translated using Weblate (Russian)

Currently translated at 100.0% (153 of 153 strings)

Translation: Habitica/Limited
Translate-URL: https://translate.habitica.com/projects/habitica/limited/ru/

Translated using Weblate (Russian)

Currently translated at 99.7% (1753 of 1757 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/ru/

Translated using Weblate (Russian)

Currently translated at 99.7% (1753 of 1757 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/ru/

Translated using Weblate (Russian)

Currently translated at 99.7% (1753 of 1757 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/ru/

Translated using Weblate (Russian)

Currently translated at 99.7% (1753 of 1757 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/ru/

Translated using Weblate (Russian)

Currently translated at 99.7% (1753 of 1757 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/ru/

Translated using Weblate (Russian)

Currently translated at 99.7% (1752 of 1757 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/ru/

Translated using Weblate (Russian)

Currently translated at 100.0% (153 of 153 strings)

Translation: Habitica/Limited
Translate-URL: https://translate.habitica.com/projects/habitica/limited/ru/

Translated using Weblate (Russian)

Currently translated at 99.7% (1752 of 1757 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/ru/

Translated using Weblate (Russian)

Currently translated at 100.0% (211 of 211 strings)

Translation: Habitica/Tasks
Translate-URL: https://translate.habitica.com/projects/habitica/tasks/ru/

Translated using Weblate (Russian)

Currently translated at 100.0% (36 of 36 strings)

Translation: Habitica/Loadingscreentips
Translate-URL: https://translate.habitica.com/projects/habitica/loadingscreentips/ru/

Translated using Weblate (Russian)

Currently translated at 99.7% (1752 of 1757 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/ru/

Translated using Weblate (Russian)

Currently translated at 100.0% (309 of 309 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/ru/

Translated using Weblate (Russian)

Currently translated at 100.0% (137 of 137 strings)

Translation: Habitica/Challenge
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/ru/

Translated using Weblate (Russian)

Currently translated at 100.0% (417 of 417 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/ru/

Translated using Weblate (Russian)

Currently translated at 100.0% (417 of 417 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/ru/

Translated using Weblate (German)

Currently translated at 100.0% (309 of 309 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/de/
2019-03-07 12:44:29 +01:00
480 changed files with 29937 additions and 27539 deletions
+5
View File
@@ -13,3 +13,8 @@ Habitica uses [Trello](https://trello.com/b/EpoYEYod/habitica) to track feature
# Contributing Code
See [Contributing to Habitica](http://habitica.fandom.com/wiki/Contributing_to_Habitica#Coders_.28Web_.26_Mobile.29)
## Issue Triage [![Open Source Helpers](https://www.codetriage.com/habitrpg/habitica/badges/users.svg)](https://www.codetriage.com/habitrpg/habitica)
You can triage issues which may include reproducing bug reports or asking for vital information, such as version numbers or reproduction instructions. If you would like to start triaging issues, one easy way to get started is to [subscribe to habitrpg on CodeTriage](https://www.codetriage.com/habitrpg/habitica).
-6
View File
@@ -67,12 +67,6 @@
"SLACK_FLAGGING_URL": "https://hooks.slack.com/services/id/id/id",
"SLACK_SUBSCRIPTIONS_URL": "https://hooks.slack.com/services/id/id/id",
"SLACK_URL": "https://hooks.slack.com/services/some-url",
"SMTP_HOST": "example.com",
"SMTP_PASS": "password",
"SMTP_PORT": 587,
"SMTP_SERVICE": "Gmail",
"SMTP_TLS": "true",
"SMTP_USER": "user@example.com",
"STRIPE_API_KEY": "aaaabbbbccccddddeeeeffff00001111",
"STRIPE_PUB_KEY": "22223333444455556666777788889999",
"TEST_DB_URI": "mongodb://localhost/habitrpg_test",
@@ -0,0 +1,84 @@
/* eslint-disable no-console */
const MIGRATION_NAME = '20190716_groups_fix';
import monk from 'monk';
import nconf from 'nconf';
const CONNECTION_STRING = nconf.get('MIGRATION_CONNECT_STRING');
import { model as User } from '../../../website/server/models/user';
const progressCount = 1000;
let count = 0;
let backupUsers;
async function updateUser (user) {
count++;
let set = { migration: MIGRATION_NAME };
let addToSet;
const monkPromise = new Promise((resolve, reject) => {
backupUsers.findOne(
{ _id: user._id },
{ fields: { _id: 1, party: 1, guilds: 1 }},
).then(foundUserInBackup => {
resolve(foundUserInBackup);
}).catch(e => {
reject(e);
})
});
let backupUser = await monkPromise;
if (!backupUser) return;
if (!user.party._id) {
set.party = backupUser.party;
}
addToSet = { guilds: { $each: backupUser.guilds }};
if (count % progressCount === 0) console.warn(`${count} ${user._id}`);
return User.update({ _id: user._id }, { $set: set, $addToSet: addToSet }).exec();
}
module.exports = async function processUsers () {
const query = {
'auth.timestamps.loggedin': {$gt: new Date('2019-07-15')},
};
let backupDb = monk(CONNECTION_STRING);
const backupDbPromise = new Promise((resolve, reject) => {
backupDb.then(() => resolve()).catch((e) => reject(e));
});
await backupDbPromise;
console.log('Connected to backup db');
backupUsers = backupDb.get('users', { castIds: false });
const fields = {
_id: 1,
party: 1,
guilds: 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],
};
}
await Promise.all(users.map(updateUser)); // eslint-disable-line no-await-in-loop
}
};
@@ -0,0 +1,88 @@
/* eslint-disable no-console */
const MIGRATION_NAME = '20190717_groups_fix_2';
import monk from 'monk';
import nconf from 'nconf';
const CONNECTION_STRING = nconf.get('MIGRATION_CONNECT_STRING');
import { model as User } from '../../../website/server/models/user';
import { sendTxn as sendTxnEmail } from '../../../website/server/libs/email';
import shared from '../../../website/common';
const questScrolls = shared.content.quests;
const progressCount = 1000;
let count = 0;
async function updateGroup (group) {
count++;
if (group && group.quest && group.quest.key && group.quest.leader) {
const quest = questScrolls[group.quest.key];
const leader = await User.findOne({_id: group.quest.leader}).exec();
if (leader && quest) {
await User.update({
_id: leader._id,
migration: {$ne: MIGRATION_NAME},
}, {
$set: {migration: MIGRATION_NAME},
$inc: {
balance: 1,
[`items.quests.${group.quest.key}`]: 1,
},
}).exec();
// unsubscribe from all is already checked by sendTxnEmail
if (leader.preferences && leader.preferences.emailNotifications && leader.preferences.emailNotifications.majorUpdates !== false) {
sendTxnEmail(leader, 'groups-outage');
}
}
}
if (count % progressCount === 0) console.warn(`${count} ${group._id}`);
}
module.exports = async function processUsers () {
const query = {
type: 'party'
};
let backupDb = monk(CONNECTION_STRING);
const backupDbPromise = new Promise((resolve, reject) => {
backupDb.then(() => resolve()).catch((e) => reject(e));
});
await backupDbPromise;
console.log('Connected to backup db');
const backupGroups = backupDb.get('groups', { castIds: false });
while (true) { // eslint-disable-line no-constant-condition
const groupsPromise = new Promise((resolve, reject) => {
backupGroups
.find(query, {
limit: 250,
sort: {_id: 1}
})
.then(foundGroupInBackup => {
resolve(foundGroupInBackup);
}).catch(e => {
reject(e);
});
});
const groups = await groupsPromise;
if (groups.length === 0) {
console.warn('All appropriate groups found and modified.');
console.warn(`\n${count} groups processed\n`);
break;
} else {
query._id = {
$gt: groups[groups.length - 1]._id,
};
}
await Promise.all(groups.map(updateGroup)); // eslint-disable-line no-await-in-loop
}
};
@@ -0,0 +1,84 @@
/* eslint-disable no-console */
const MIGRATION_NAME = '20190731_naming_day';
import { v4 as uuid } from 'uuid';
import { model as User } from '../../../website/server/models/user';
const progressCount = 1000;
let count = 0;
async function updateUser (user) {
count++;
let set;
let push;
const inc = {
'items.food.Cake_Base': 1,
'items.food.Cake_CottonCandyBlue': 1,
'items.food.Cake_CottonCandyPink': 1,
'items.food.Cake_Desert': 1,
'items.food.Cake_Golden': 1,
'items.food.Cake_Red': 1,
'items.food.Cake_Shade': 1,
'items.food.Cake_Skeleton': 1,
'items.food.Cake_White': 1,
'items.food.Cake_Zombie': 1,
'achievements.habiticaDays': 1,
};
if (user && user.items && user.items.gear && user.items.gear.owned && typeof user.items.gear.owned.body_special_namingDay2018 !== 'undefined') {
set = { migration: MIGRATION_NAME };
} else if (user && user.items && user.items.gear && user.items.gear.owned && typeof user.items.gear.owned.head_special_namingDay2017 !== 'undefined') {
set = { migration: MIGRATION_NAME, 'items.gear.owned.body_special_namingDay2018': false };
push = { pinnedItems: { type: 'marketGear', path: 'gear.flat.body_special_namingDay2018', _id: uuid() }};
} else if (user && user.items && user.items.pets && typeof user.items.pets['Gryphon-RoyalPurple'] !== 'undefined') {
set = { migration: MIGRATION_NAME, 'items.gear.owned.head_special_namingDay2017': false };
push = { pinnedItems: { type: 'marketGear', path: 'gear.flat.head_special_namingDay2017', _id: uuid() }};
} else if (user && user.items && user.items.mounts && typeof user.items.mounts['Gryphon-RoyalPurple'] !== 'undefined') {
set = { migration: MIGRATION_NAME, 'items.pets.Gryphon-RoyalPurple': 5 };
} else {
set = { migration: MIGRATION_NAME, 'items.mounts.Gryphon-RoyalPurple': true };
}
if (count % progressCount === 0) console.warn(`${count} ${user._id}`);
if (push) {
return await User.update({ _id: user._id }, { $set: set, $inc: inc, $push: push }).exec();
} else {
return await User.update({ _id: user._id }, { $set: set, $inc: inc }).exec();
}
}
module.exports = async function processUsers () {
let query = {
migration: { $ne: MIGRATION_NAME },
'auth.timestamps.loggedin': { $gt: new Date('2019-07-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
}
};
+1 -1
View File
@@ -17,7 +17,7 @@ function setUpServer () {
setUpServer();
// Replace this with your migration
const processUsers = require('./users/mystery-items.js');
const processUsers = require('');
processUsers()
.then(function success () {
process.exit(0);
+2 -2
View File
@@ -1,6 +1,6 @@
/* eslint-disable no-console */
const MIGRATION_NAME = 'mystery_items_201905';
const MYSTERY_ITEMS = ['headAccessory_mystery_201905', 'back_mystery_201905'];
const MIGRATION_NAME = 'mystery_items_201907';
const MYSTERY_ITEMS = ['head_mystery_201907', 'armor_mystery_201907', 'eyewear_mystery_201907'];
import { model as User } from '../../website/server/models/user';
import { model as UserNotification } from '../../website/server/models/userNotification';
+306 -206
View File
File diff suppressed because it is too large Load Diff
+4 -5
View File
@@ -1,10 +1,10 @@
{
"name": "habitica",
"description": "A habit tracker app which treats your goals like a Role Playing Game.",
"version": "4.101.1",
"version": "4.105.4",
"main": "./website/server/index.js",
"dependencies": {
"@google-cloud/trace-agent": "^3.6.0",
"@google-cloud/trace-agent": "^4.0.0",
"@slack/client": "^3.8.1",
"accepts": "^1.3.5",
"amazon-payments": "^0.2.7",
@@ -69,7 +69,6 @@
"nconf": "^0.10.0",
"node-gcm": "^1.0.2",
"node-sass": "^4.9.0",
"nodemailer": "^6.0.0",
"ora": "^3.2.0",
"pageres": "^5.1.0",
"passport": "^0.4.0",
@@ -89,7 +88,7 @@
"stripe": "^5.9.0",
"superagent": "^5.0.2",
"svg-inline-loader": "^0.8.0",
"svg-url-loader": "^2.3.2",
"svg-url-loader": "^3.0.0",
"svgo": "^1.2.0",
"svgo-loader": "^2.1.0",
"universal-analytics": "^0.4.17",
@@ -152,7 +151,7 @@
"chai": "^4.1.2",
"chai-as-promised": "^7.1.1",
"chalk": "^2.4.1",
"chromedriver": "^73.0.0",
"chromedriver": "^76.0.0",
"connect-history-api-fallback": "^1.1.0",
"coveralls": "^3.0.3",
"cross-spawn": "^6.0.5",
+1 -1
View File
@@ -1232,7 +1232,7 @@ describe('cron', () => {
cron({user, tasksByType, daysMissed, analytics});
expect(user.history.exp).to.have.lengthOf(1);
expect(user.history.exp[0].value).to.equal(150);
expect(user.history.exp[0].value).to.equal(25);
});
it('increments perfect day achievement if all (at least 1) due dailies were completed', () => {
+4 -42
View File
@@ -1,9 +1,7 @@
/* eslint-disable global-require */
import got from 'got';
import nconf from 'nconf';
import nodemailer from 'nodemailer';
import requireAgain from 'require-again';
import logger from '../../../../website/server/libs/logger';
import { TAVERN_ID } from '../../../../website/server/models/group';
import { defer } from '../../../helpers/api-unit.helper';
@@ -35,42 +33,6 @@ function getUser () {
describe('emails', () => {
let pathToEmailLib = '../../../../website/server/libs/email';
describe('sendEmail', () => {
let sendMailSpy;
beforeEach(() => {
sendMailSpy = sandbox.stub().returns(defer().promise);
sandbox.stub(nodemailer, 'createTransport').returns({
sendMail: sendMailSpy,
});
});
afterEach(() => {
sandbox.restore();
});
it('can send an email using the default transport', () => {
let attachEmail = requireAgain(pathToEmailLib);
attachEmail.send();
expect(sendMailSpy).to.be.calledOnce;
});
it('logs errors', (done) => {
sandbox.stub(logger, 'error');
let attachEmail = requireAgain(pathToEmailLib);
attachEmail.send();
expect(sendMailSpy).to.be.calledOnce;
defer().reject();
// wait for unhandledRejection event to fire
setTimeout(() => {
expect(logger.error).to.be.calledOnce;
done();
}, 20);
});
});
describe('getUserInfo', () => {
it('returns an empty object if no field request', () => {
let attachEmail = requireAgain(pathToEmailLib);
@@ -84,7 +46,7 @@ describe('emails', () => {
let user = getUser();
let data = getUserInfo(user, ['name', 'email', '_id', 'canSend']);
expect(data).to.have.property('name', user.profile.name);
expect(data).to.have.property('name', user.auth.local.username);
expect(data).to.have.property('email', user.auth.local.email);
expect(data).to.have.property('_id', user._id);
expect(data).to.have.property('canSend', true);
@@ -95,11 +57,11 @@ describe('emails', () => {
let getUserInfo = attachEmail.getUserInfo;
let user = getUser();
delete user.profile.name;
delete user.auth.local;
delete user.auth.local.email;
let data = getUserInfo(user, ['name', 'email', '_id', 'canSend']);
expect(data).to.have.property('name', user.profile.name);
expect(data).to.have.property('name', user.auth.local.username);
expect(data).to.have.property('email', user.auth.facebook.emails[0].value);
expect(data).to.have.property('_id', user._id);
expect(data).to.have.property('canSend', true);
@@ -114,7 +76,7 @@ describe('emails', () => {
let data = getUserInfo(user, ['name', 'email', '_id', 'canSend']);
expect(data).to.have.property('name', user.profile.name);
expect(data).to.have.property('name', user.auth.local.username);
expect(data).not.to.have.property('email');
expect(data).to.have.property('_id', user._id);
expect(data).to.have.property('canSend', true);
@@ -16,6 +16,7 @@ describe('payments/index', () => {
beforeEach(async () => {
user = new User();
user.profile.name = 'sender';
user.auth.local.username = 'sender';
await user.save();
group = generateGroup({
+176 -72
View File
@@ -12,6 +12,7 @@ import {
SPAM_MIN_EXEMPT_CONTRIB_LEVEL,
TAVERN_ID,
} from '../../../../../website/server/models/group';
import { CHAT_FLAG_FROM_SHADOW_MUTE } from '../../../../../website/common/script/constants';
import { v4 as generateUUID } from 'uuid';
import { getMatchesByWordArray } from '../../../../../website/server/libs/stringUtils';
import bannedWords from '../../../../../website/server/libs/bannedWords';
@@ -81,6 +82,10 @@ describe('POST /chat', () => {
});
describe('mute user', () => {
afterEach(() => {
member.update({'flags.chatRevoked': false});
});
it('returns an error when chat privileges are revoked when sending a message to a public guild', async () => {
const userWithChatRevoked = await member.update({'flags.chatRevoked': true});
await expect(userWithChatRevoked.post(`/groups/${groupWithChat._id}/chat`, { message: testMessage})).to.eventually.be.rejected.and.eql({
@@ -89,6 +94,129 @@ describe('POST /chat', () => {
message: t('chatPrivilegesRevoked'),
});
});
it('does not error when chat privileges are revoked when sending a message to a private guild', async () => {
const { group, members } = await createAndPopulateGroup({
groupDetails: {
name: 'Private Guild',
type: 'guild',
privacy: 'private',
},
members: 1,
});
const privateGuildMemberWithChatsRevoked = members[0];
await privateGuildMemberWithChatsRevoked.update({'flags.chatRevoked': true});
const message = await privateGuildMemberWithChatsRevoked.post(`/groups/${group._id}/chat`, { message: testMessage});
expect(message.message.id).to.exist;
});
it('does not error when chat privileges are revoked when sending a message to a party', async () => {
const { group, members } = await createAndPopulateGroup({
groupDetails: {
name: 'Party',
type: 'party',
privacy: 'private',
},
members: 1,
});
const privatePartyMemberWithChatsRevoked = members[0];
await privatePartyMemberWithChatsRevoked.update({'flags.chatRevoked': true});
const message = await privatePartyMemberWithChatsRevoked.post(`/groups/${group._id}/chat`, { message: testMessage});
expect(message.message.id).to.exist;
});
});
describe('shadow-mute user', () => {
beforeEach(() => {
sandbox.spy(email, 'sendTxn');
sandbox.stub(IncomingWebhook.prototype, 'send');
});
afterEach(() => {
sandbox.restore();
member.update({'flags.chatShadowMuted': false});
});
it('creates a chat with flagCount already set and notifies mods when sending a message to a public guild', async () => {
const userWithChatShadowMuted = await member.update({'flags.chatShadowMuted': true});
const message = await userWithChatShadowMuted.post(`/groups/${groupWithChat._id}/chat`, { message: testMessage});
expect(message.message.id).to.exist;
expect(message.message.flagCount).to.eql(CHAT_FLAG_FROM_SHADOW_MUTE);
// Email sent to mods
await sleep(0.5);
expect(email.sendTxn).to.be.calledOnce;
expect(email.sendTxn.args[0][1]).to.eql('shadow-muted-post-report-to-mods');
// Slack message to mods
expect(IncomingWebhook.prototype.send).to.be.calledOnce;
/* eslint-disable camelcase */
expect(IncomingWebhook.prototype.send).to.be.calledWith({
text: `@${member.auth.local.username} / ${member.profile.name} posted while shadow-muted`,
attachments: [{
fallback: 'Shadow-Muted Message',
color: 'danger',
author_name: `@${member.auth.local.username} ${member.profile.name} (${member.auth.local.email}; ${member._id})`,
title: 'Shadow-Muted Post in Test Guild',
title_link: `${BASE_URL}/groups/guild/${groupWithChat.id}`,
text: testMessage,
mrkdwn_in: [
'text',
],
}],
});
/* eslint-enable camelcase */
});
it('creates a chat with zero flagCount when sending a message to a private guild', async () => {
const { group, members } = await createAndPopulateGroup({
groupDetails: {
name: 'Private Guild',
type: 'guild',
privacy: 'private',
},
members: 1,
});
const userWithChatShadowMuted = members[0];
await userWithChatShadowMuted.update({'flags.chatShadowMuted': true});
const message = await userWithChatShadowMuted.post(`/groups/${group._id}/chat`, { message: testMessage});
expect(message.message.id).to.exist;
expect(message.message.flagCount).to.eql(0);
});
it('creates a chat with zero flagCount when sending a message to a party', async () => {
const { group, members } = await createAndPopulateGroup({
groupDetails: {
name: 'Party',
type: 'party',
privacy: 'private',
},
members: 1,
});
const userWithChatShadowMuted = members[0];
await userWithChatShadowMuted.update({'flags.chatShadowMuted': true});
const message = await userWithChatShadowMuted.post(`/groups/${group._id}/chat`, { message: testMessage});
expect(message.message.id).to.exist;
expect(message.message.flagCount).to.eql(0);
});
it('creates a chat with zero flagCount when non-shadow-muted user sends a message to a public guild', async () => {
const message = await member.post(`/groups/${groupWithChat._id}/chat`, { message: testMessage});
expect(message.message.id).to.exist;
expect(message.message.flagCount).to.eql(0);
});
});
context('banned word', () => {
@@ -235,6 +363,7 @@ describe('POST /chat', () => {
afterEach(() => {
sandbox.restore();
user.update({'flags.chatRevoked': false});
});
it('errors and revokes privileges when chat message contains a banned slur', async () => {
@@ -274,11 +403,6 @@ describe('POST /chat', () => {
error: 'NotAuthorized',
message: t('chatPrivilegesRevoked'),
});
// @TODO: The next test should not depend on this. We should reset the user test in a beforeEach
// Restore chat privileges to continue testing
user.flags.chatRevoked = false;
await user.update({'flags.chatRevoked': false});
});
it('does not allow slurs in private groups', async () => {
@@ -327,10 +451,6 @@ describe('POST /chat', () => {
error: 'NotAuthorized',
message: t('chatPrivilegesRevoked'),
});
// Restore chat privileges to continue testing
members[0].flags.chatRevoked = false;
await members[0].update({'flags.chatRevoked': false});
});
it('errors when slur is typed in mixed case', async () => {
@@ -345,42 +465,6 @@ describe('POST /chat', () => {
});
});
it('does not error when sending a message to a private guild with a user with revoked chat', async () => {
let { group, members } = await createAndPopulateGroup({
groupDetails: {
name: 'Private Guild',
type: 'guild',
privacy: 'private',
},
members: 1,
});
let privateGuildMemberWithChatsRevoked = members[0];
await privateGuildMemberWithChatsRevoked.update({'flags.chatRevoked': true});
let message = await privateGuildMemberWithChatsRevoked.post(`/groups/${group._id}/chat`, { message: testMessage});
expect(message.message.id).to.exist;
});
it('does not error when sending a message to a party with a user with revoked chat', async () => {
let { group, members } = await createAndPopulateGroup({
groupDetails: {
name: 'Party',
type: 'party',
privacy: 'private',
},
members: 1,
});
let privatePartyMemberWithChatsRevoked = members[0];
await privatePartyMemberWithChatsRevoked.update({'flags.chatRevoked': true});
let message = await privatePartyMemberWithChatsRevoked.post(`/groups/${group._id}/chat`, { message: testMessage});
expect(message.message.id).to.exist;
});
it('creates a chat', async () => {
const newMessage = await user.post(`/groups/${groupWithChat._id}/chat`, { message: testMessage});
const groupMessages = await user.get(`/groups/${groupWithChat._id}/chat`);
@@ -486,35 +570,55 @@ describe('POST /chat', () => {
});
});
it('notifies other users of new messages for a guild', async () => {
let message = await user.post(`/groups/${groupWithChat._id}/chat`, { message: testMessage});
let memberWithNotification = await member.get('/user');
expect(message.message.id).to.exist;
expect(memberWithNotification.newMessages[`${groupWithChat._id}`]).to.exist;
expect(memberWithNotification.notifications.find(n => {
return n.type === 'NEW_CHAT_MESSAGE' && n.data.group.id === groupWithChat._id;
})).to.exist;
});
it('notifies other users of new messages for a party', async () => {
let { group, groupLeader, members } = await createAndPopulateGroup({
groupDetails: {
name: 'Test Party',
type: 'party',
privacy: 'private',
},
members: 1,
context('chat notifications', () => {
beforeEach(() => {
member.update({newMessages: {}, notifications: []});
});
let message = await groupLeader.post(`/groups/${group._id}/chat`, { message: testMessage});
let memberWithNotification = await members[0].get('/user');
it('notifies other users of new messages for a guild', async () => {
let message = await user.post(`/groups/${groupWithChat._id}/chat`, { message: testMessage });
let memberWithNotification = await member.get('/user');
expect(message.message.id).to.exist;
expect(memberWithNotification.newMessages[`${group._id}`]).to.exist;
expect(memberWithNotification.notifications.find(n => {
return n.type === 'NEW_CHAT_MESSAGE' && n.data.group.id === group._id;
})).to.exist;
expect(message.message.id).to.exist;
expect(memberWithNotification.newMessages[`${groupWithChat._id}`]).to.exist;
expect(memberWithNotification.notifications.find(n => {
return n.type === 'NEW_CHAT_MESSAGE' && n.data.group.id === groupWithChat._id;
})).to.exist;
});
it('notifies other users of new messages for a party', async () => {
let { group, groupLeader, members } = await createAndPopulateGroup({
groupDetails: {
name: 'Test Party',
type: 'party',
privacy: 'private',
},
members: 1,
});
let message = await groupLeader.post(`/groups/${group._id}/chat`, { message: testMessage });
let memberWithNotification = await members[0].get('/user');
expect(message.message.id).to.exist;
expect(memberWithNotification.newMessages[`${group._id}`]).to.exist;
expect(memberWithNotification.notifications.find(n => {
return n.type === 'NEW_CHAT_MESSAGE' && n.data.group.id === group._id;
})).to.exist;
});
it('does not notify other users of a new message that is already hidden from shadow-muting', async () => {
await user.update({'flags.chatShadowMuted': true});
let message = await user.post(`/groups/${groupWithChat._id}/chat`, { message: testMessage });
let memberWithNotification = await member.get('/user');
await user.update({'flags.chatShadowMuted': false});
expect(message.message.id).to.exist;
expect(memberWithNotification.newMessages[`${groupWithChat._id}`]).to.not.exist;
expect(memberWithNotification.notifications.find(n => {
return n.type === 'NEW_CHAT_MESSAGE' && n.data.group.id === groupWithChat._id;
})).to.not.exist;
});
});
context('Spam prevention', () => {
@@ -533,7 +637,7 @@ describe('POST /chat', () => {
});
it('contributor should not receive spam alert', async () => {
let userSocialite = await member.update({'contributor.level': SPAM_MIN_EXEMPT_CONTRIB_LEVEL, 'flags.chatRevoked': false});
let userSocialite = await member.update({'contributor.level': SPAM_MIN_EXEMPT_CONTRIB_LEVEL});
// Post 1 more message than the spam limit to ensure they do not reach the limit
for (let i = 0; i < SPAM_MESSAGE_LIMIT + 1; i++) {
@@ -105,16 +105,22 @@ describe('PUT /heroes/:heroId', () => {
it('updates chatRevoked flag', async () => {
let hero = await generateUser();
await user.put(`/hall/heroes/${hero._id}`, {
flags: {chatRevoked: true},
});
await hero.sync();
expect(hero.flags.chatRevoked).to.eql(true);
});
it('updates chatShadowMuted flag', async () => {
let hero = await generateUser();
await user.put(`/hall/heroes/${hero._id}`, {
flags: {chatShadowMuted: true},
});
await hero.sync();
expect(hero.flags.chatShadowMuted).to.eql(true);
});
it('updates contributor level', async () => {
let hero = await generateUser({
contributor: {level: 5},
@@ -6,7 +6,7 @@ describe('GET /inbox/messages', () => {
let user;
let otherUser;
before(async () => {
beforeEach(async () => {
[user, otherUser] = await Promise.all([generateUser(), generateUser()]);
await otherUser.post('/members/send-private-message', {
@@ -54,6 +54,21 @@ describe('POST /tasks/challenge/:challengeId', () => {
expect(tasksOrder.habits).to.include(task.id);
});
it('allows non-leader admin to add tasks to a challenge when not a member', async () => {
const admin = await generateUser({'contributor.admin': true});
let task = await admin.post(`/tasks/challenge/${challenge._id}`, {
text: 'test habit from admin',
type: 'habit',
up: false,
down: true,
notes: 1976,
});
let {tasksOrder} = await user.get(`/challenges/${challenge._id}`);
expect(tasksOrder.habits).to.include(task.id);
});
it('returns error when user tries to create task with a alias', async () => {
await expect(user.post(`/tasks/challenge/${challenge._id}`, {
text: 'test habit',
@@ -44,7 +44,7 @@ describe('DELETE /inbox/messages/:messageId', () => {
});
it('deletes one message', async () => {
const messages = await user.get('/inbox/messages');
const messages = await user.get('/inbox/paged-messages');
expect(messages.length).to.equal(3);
@@ -53,10 +53,10 @@ describe('DELETE /inbox/messages/:messageId', () => {
expect(messages[2].text).to.equal('first');
await user.del(`/inbox/messages/${messages[1]._id}`);
const updatedMessages = await user.get('/inbox/messages');
const updatedMessages = await user.get('/inbox/paged-messages');
expect(updatedMessages.length).to.equal(2);
expect(updatedMessages[0].text).to.equal('third');
expect(updatedMessages[1].text).to.equal('first');
});
});
});
@@ -7,7 +7,7 @@ describe('GET /inbox/conversations', () => {
let otherUser;
let thirdUser;
before(async () => {
beforeEach(async () => {
[user, otherUser, thirdUser] = await Promise.all([generateUser(), generateUser(), generateUser()]);
await otherUser.post('/members/send-private-message', {
@@ -41,4 +41,51 @@ describe('GET /inbox/conversations', () => {
expect(result[0].user).to.be.equal(user.profile.name);
expect(result[0].username).to.be.equal(user.auth.local.username);
});
it('returns the user inbox messages as an array of ordered messages (from most to least recent)', async () => {
const messages = await user.get('/inbox/paged-messages');
expect(messages.length).to.equal(5);
// message to yourself
expect(messages[0].text).to.equal('fifth');
expect(messages[0].sent).to.equal(false);
expect(messages[0].uuid).to.equal(user._id);
expect(messages[1].text).to.equal('fourth');
expect(messages[2].text).to.equal('third');
expect(messages[3].text).to.equal('second');
expect(messages[4].text).to.equal('first');
});
it('returns four messages when using page-query ', async () => {
const promises = [];
for (let i = 0; i < 10; i++) {
promises.push(user.post('/members/send-private-message', {
toUserId: user.id,
message: 'fourth',
}));
}
await Promise.all(promises);
const messages = await user.get('/inbox/paged-messages?page=1');
expect(messages.length).to.equal(5);
});
it('returns only the messages of one conversation', async () => {
const messages = await user.get(`/inbox/paged-messages?conversation=${otherUser.id}`);
expect(messages.length).to.equal(3);
});
it('returns the correct message format', async () => {
const messages = await otherUser.get(`/inbox/paged-messages?conversation=${user.id}`);
expect(messages[0].toUUID).to.equal(user.id); // from user
expect(messages[1].toUUID).to.not.exist; // only filled if its from the chat partner
expect(messages[2].toUUID).to.equal(user.id); // from user
});
});
@@ -19,10 +19,10 @@ describe('POST /members/flag-private-message/:messageId', () => {
toUserId: receiver._id,
});
let senderMessages = await userToSendMessage.get('/inbox/messages');
let senderMessages = await userToSendMessage.get('/inbox/paged-messages');
let sendersMessageInSendersInbox = _.find(senderMessages, (message) => {
return message.uuid === receiver._id && message.text === messageToSend;
return message.toUUID === receiver._id && message.text === messageToSend;
});
expect(sendersMessageInSendersInbox).to.exist;
@@ -37,7 +37,7 @@ describe('POST /members/flag-private-message/:messageId', () => {
toUserId: receiver._id,
});
let receiversMessages = await receiver.get('/inbox/messages');
let receiversMessages = await receiver.get('/inbox/paged-messages');
let sendersMessageInReceiversInbox = _.find(receiversMessages, (message) => {
return message.uuid === userToSendMessage._id && message.text === messageToSend;
@@ -55,7 +55,7 @@ describe('POST /members/flag-private-message/:messageId', () => {
toUserId: receiver._id,
});
let receiversMessages = await receiver.get('/inbox/messages');
let receiversMessages = await receiver.get('/inbox/paged-messages');
let sendersMessageInReceiversInbox = _.find(receiversMessages, (message) => {
return message.uuid === userToSendMessage._id && message.text === messageToSend;
@@ -83,12 +83,12 @@ context('avatar.vue', () => {
expect(vm.paddingTop).to.equal('28px');
});
it('is 24.5px if user has a pet', () => {
it('is 24px if user has a pet', () => {
vm.member.items = {
currentPet: { name: 'Foo' },
};
expect(vm.paddingTop).to.equal('24.5px');
expect(vm.paddingTop).to.equal('24px');
});
it('is 0px if user has a mount', () => {
@@ -297,4 +297,4 @@ context('avatar.vue', () => {
});
});
});
});
});
@@ -0,0 +1,61 @@
import { shallowMount, createLocalVue } from '@vue/test-utils';
import ChallengeDetailComponent from 'client/components/challenges/challengeDetail.vue';
import Store from 'client/libs/store';
const localVue = createLocalVue();
localVue.use(Store);
describe('Challenge Detail', () => {
let store;
let wrapper;
beforeEach(() => {
store = new Store({
state: {
user: {
data: {
contributor: {
admin: false,
},
challenges: [],
stats: {
},
flags: {},
preferences: {},
party: {
quest: {
},
},
},
},
},
actions: {
'members:getChallengeMembers': () => {},
'challenges:getChallenge': () => [
{_id: '1', group: { name: '', type: ''}, memberCount: 1, name: '', summary: '', description: '', leader: '', price: 1},
],
'tasks:getChallengeTasks': () => [
{_id: '1', type: 'habit'},
{_id: '2', type: 'daily'},
{_id: '3', type: 'reward'},
{_id: '4', type: 'todo'},
],
},
getters: {
},
});
wrapper = shallowMount(ChallengeDetailComponent, {
store,
localVue,
mocks: {
$t: (string) => string,
},
});
});
it('removes a destroyed task from task list', () => {
let taskToRemove = {_id: '1', type: 'habit'};
wrapper.vm.taskDestroyed(taskToRemove);
expect(wrapper.vm.tasksByType[taskToRemove.type].length).to.eq(0);
});
});
@@ -86,7 +86,7 @@ export async function generateGroup (leader, details = {}, update = {}) {
// This is generate group + the ability to create
// real users to populate it. The settings object
// takes in:
// members: Number - the number of group members to create. Defaults to 0.
// members: Number - the number of group members to create. Defaults to 0. Does not include group leader.
// inivtes: Number - the number of users to create and invite to the group. Defaults to 0.
// groupDetails: Object - how to initialize the group
// leaderDetails: Object - defaults for the leader, defaults with a gem balance so the user
@@ -80,7 +80,7 @@ export async function generateGroup (leader, details = {}, update = {}) {
// This is generate group + the ability to create
// real users to populate it. The settings object
// takes in:
// members: Number - the number of group members to create. Defaults to 0.
// members: Number - the number of group members to create. Defaults to 0. Does not include group leader.
// inivtes: Number - the number of users to create and invite to the group. Defaults to 0.
// groupDetails: Object - how to initialize the group
// leaderDetails: Object - defaults for the leader, defaults with a gem balance so the user
+1 -1
View File
@@ -57,6 +57,7 @@ div
display: flex;
flex-direction: column;
min-height: 100vh;
overflow-x: hidden;
}
#loading-screen-inapp {
@@ -89,7 +90,6 @@ div
}
.container-fluid {
overflow-x: hidden;
flex: 1 0 auto;
}
@@ -1,72 +1,30 @@
.promo_armoire_backgrounds_201906 {
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: 0px -720px;
width: 423px;
height: 147px;
}
.promo_bronze_quest {
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: 0px -359px;
width: 360px;
height: 360px;
}
.promo_dolphin_quest {
.promo_armoire_backgrounds_201907 {
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: 0px 0px;
width: 553px;
height: 358px;
}
.promo_floral_sunshine_potions {
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -424px -720px;
width: 423px;
height: 147px;
}
.promo_halfmoon_glasses {
.promo_mystery_201907 {
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -963px -296px;
width: 279px;
height: 147px;
}
.promo_mystery_201905 {
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -963px -148px;
background-position: -424px 0px;
width: 282px;
height: 147px;
height: 144px;
}
.promo_oddballs_bundle {
.promo_naming_day_2018 {
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -963px 0px;
width: 423px;
height: 147px;
}
.promo_orcas {
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -963px -444px;
width: 219px;
height: 147px;
}
.promo_seasonal_shop {
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -1183px -444px;
width: 162px;
height: 132px;
}
.promo_summer_splash_2019 {
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -554px 0px;
width: 408px;
height: 186px;
background-position: 0px -148px;
width: 285px;
height: 162px;
}
.promo_take_this {
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -1246px -148px;
background-position: -424px -145px;
width: 96px;
height: 69px;
}
.scene_hiking {
.scene_rewards {
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -554px -187px;
width: 258px;
height: 258px;
background-position: 0px -311px;
width: 207px;
height: 180px;
}
@@ -364,769 +364,769 @@
width: 141px;
height: 147px;
}
.background_apple_picking {
.background_among_giant_anemones {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -1136px -740px;
width: 141px;
height: 147px;
}
.background_aquarium {
.background_apple_picking {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -1136px -888px;
width: 141px;
height: 147px;
}
.background_archaeological_dig {
.background_aquarium {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: 0px -1036px;
width: 141px;
height: 147px;
}
.background_archery_range {
.background_archaeological_dig {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -142px -1036px;
width: 141px;
height: 147px;
}
.background_at_the_docks {
.background_archery_range {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -284px -1036px;
width: 141px;
height: 147px;
}
.background_aurora {
.background_at_the_docks {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -426px -1036px;
width: 141px;
height: 147px;
}
.background_autumn_forest {
.background_aurora {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -568px -1036px;
width: 141px;
height: 147px;
}
.background_avalanche {
.background_autumn_forest {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -710px -1036px;
width: 141px;
height: 147px;
}
.background_back_alley {
.background_avalanche {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -852px -1036px;
width: 141px;
height: 147px;
}
.background_back_of_giant_beast {
.background_back_alley {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -994px -1036px;
width: 141px;
height: 147px;
}
.background_bamboo_forest {
.background_back_of_giant_beast {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -1136px -1036px;
width: 141px;
height: 147px;
}
.background_bayou {
.background_bamboo_forest {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -1278px 0px;
width: 141px;
height: 147px;
}
.background_beach {
.background_bayou {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -1278px -148px;
width: 141px;
height: 147px;
}
.background_beehive {
.background_beach {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -1278px -296px;
width: 141px;
height: 147px;
}
.background_bell_tower {
.background_beehive {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -1278px -444px;
width: 141px;
height: 147px;
}
.background_beside_well {
.background_bell_tower {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -1278px -592px;
width: 141px;
height: 147px;
}
.background_birch_forest {
.background_beside_well {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -1278px -740px;
width: 141px;
height: 147px;
}
.background_blacksmithy {
.background_birch_forest {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -1278px -888px;
width: 141px;
height: 147px;
}
.background_blizzard {
.background_blacksmithy {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -1278px -1036px;
width: 141px;
height: 147px;
}
.background_blossoming_desert {
.background_blizzard {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: 0px -1184px;
width: 141px;
height: 147px;
}
.background_blue {
.background_blossoming_desert {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -142px -1184px;
width: 141px;
height: 147px;
}
.background_bridge {
.background_blue {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -284px -1184px;
width: 141px;
height: 147px;
}
.background_bug_covered_log {
.background_bridge {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -426px -1184px;
width: 141px;
height: 147px;
}
.background_buried_treasure {
.background_bug_covered_log {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -568px -1184px;
width: 141px;
height: 147px;
}
.background_champions_colosseum {
.background_buried_treasure {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -710px -1184px;
width: 141px;
height: 147px;
}
.background_cherry_trees {
.background_champions_colosseum {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -852px -1184px;
width: 141px;
height: 147px;
}
.background_chessboard_land {
.background_cherry_trees {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -994px -1184px;
width: 141px;
height: 147px;
}
.background_clouds {
.background_chessboard_land {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -1136px -1184px;
width: 141px;
height: 147px;
}
.background_coral_reef {
.background_clouds {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -1278px -1184px;
width: 141px;
height: 147px;
}
.background_cornfields {
.background_coral_reef {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -1420px 0px;
width: 141px;
height: 147px;
}
.background_cozy_barn {
.background_cornfields {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -1420px -148px;
width: 141px;
height: 147px;
}
.background_cozy_bedroom {
.background_cozy_barn {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -1420px -296px;
width: 141px;
height: 147px;
}
.background_cozy_library {
.background_cozy_bedroom {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: 0px 0px;
width: 141px;
height: 147px;
}
.background_creepy_castle {
.background_cozy_library {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -1420px -592px;
width: 141px;
height: 147px;
}
.background_crosscountry_ski_trail {
.background_creepy_castle {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -1420px -740px;
width: 141px;
height: 147px;
}
.background_crystal_cave {
.background_crosscountry_ski_trail {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -1420px -888px;
width: 141px;
height: 147px;
}
.background_dark_deep {
.background_crystal_cave {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -1420px -1036px;
width: 141px;
height: 147px;
}
.background_deep_mine {
.background_dark_deep {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -1420px -1184px;
width: 141px;
height: 147px;
}
.background_deep_sea {
.background_deep_mine {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: 0px -1332px;
width: 141px;
height: 147px;
}
.background_desert_dunes {
.background_deep_sea {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -142px -1332px;
width: 141px;
height: 147px;
}
.background_dilatory_castle {
.background_desert_dunes {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -284px -1332px;
width: 141px;
height: 147px;
}
.background_dilatory_city {
.background_dilatory_castle {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -426px -1332px;
width: 141px;
height: 147px;
}
.background_dilatory_ruins {
.background_dilatory_city {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -568px -1332px;
width: 141px;
height: 147px;
}
.background_distant_castle {
.background_dilatory_ruins {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -710px -1332px;
width: 141px;
height: 147px;
}
.background_dojo {
.background_distant_castle {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -852px -1332px;
width: 141px;
height: 147px;
}
.background_drifting_raft {
.background_dojo {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -994px -1332px;
width: 141px;
height: 147px;
}
.background_driving_a_coach {
.background_drifting_raft {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -1136px -1332px;
width: 141px;
height: 147px;
}
.background_driving_a_sleigh {
.background_driving_a_coach {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -1278px -1332px;
width: 141px;
height: 147px;
}
.background_duck_pond {
.background_driving_a_sleigh {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -1420px -1332px;
width: 141px;
height: 147px;
}
.background_dungeon {
.background_duck_pond {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -1562px 0px;
width: 141px;
height: 147px;
}
.background_dusty_canyons {
.background_dungeon {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -1562px -148px;
width: 141px;
height: 147px;
}
.background_elegant_balcony {
.background_dusty_canyons {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -1562px -296px;
width: 141px;
height: 147px;
}
.background_fairy_ring {
.background_elegant_balcony {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -1562px -444px;
width: 141px;
height: 147px;
}
.background_fantastical_shoe_store {
.background_fairy_ring {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -1562px -592px;
width: 141px;
height: 147px;
}
.background_farmhouse {
.background_fantastical_shoe_store {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -1562px -740px;
width: 141px;
height: 147px;
}
.background_fiber_arts_room {
.background_farmhouse {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -1562px -888px;
width: 141px;
height: 147px;
}
.background_field_with_colored_eggs {
.background_fiber_arts_room {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -1562px -1036px;
width: 141px;
height: 147px;
}
.background_floating_islands {
.background_field_with_colored_eggs {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -1562px -1184px;
width: 141px;
height: 147px;
}
.background_floral_meadow {
.background_floating_islands {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -1562px -1332px;
width: 141px;
height: 147px;
}
.background_flower_market {
.background_floral_meadow {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: 0px -1480px;
width: 141px;
height: 147px;
}
.customize-option.background_flower_market {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -25px -1495px;
width: 60px;
height: 60px;
}
.background_flying_over_a_field_of_wildflowers {
.background_flower_market {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -142px -1480px;
width: 141px;
height: 147px;
}
.customize-option.background_flying_over_a_field_of_wildflowers {
.customize-option.background_flower_market {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -167px -1495px;
width: 60px;
height: 60px;
}
.background_flying_over_an_ancient_forest {
.background_flying_over_a_field_of_wildflowers {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -284px -1480px;
width: 141px;
height: 147px;
}
.background_flying_over_icy_steppes {
.customize-option.background_flying_over_a_field_of_wildflowers {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -309px -1495px;
width: 60px;
height: 60px;
}
.background_flying_over_an_ancient_forest {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -426px -1480px;
width: 141px;
height: 147px;
}
.background_flying_over_rocky_canyon {
.background_flying_over_icy_steppes {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -568px -1480px;
width: 141px;
height: 147px;
}
.background_flying_over_snowy_mountains {
.background_flying_over_rocky_canyon {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -710px -1480px;
width: 141px;
height: 147px;
}
.background_forest {
.background_flying_over_snowy_mountains {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -852px -1480px;
width: 141px;
height: 147px;
}
.background_frigid_peak {
.background_flying_over_tropical_islands {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -1420px -444px;
width: 141px;
height: 147px;
}
.background_frosty_forest {
.background_forest {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -1136px -444px;
width: 141px;
height: 147px;
}
.background_frozen_lake {
.background_frigid_peak {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -1136px -296px;
width: 141px;
height: 147px;
}
.background_garden_shed {
.background_frosty_forest {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -1136px -148px;
width: 141px;
height: 147px;
}
.background_gazebo {
.background_frozen_lake {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -1136px 0px;
width: 141px;
height: 147px;
}
.background_giant_birdhouse {
.background_garden_shed {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -994px -888px;
width: 141px;
height: 147px;
}
.background_giant_book {
.background_gazebo {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -852px -888px;
width: 141px;
height: 147px;
}
.background_giant_florals {
.background_giant_birdhouse {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -710px -888px;
width: 141px;
height: 147px;
}
.background_giant_seashell {
.background_giant_book {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -568px -888px;
width: 141px;
height: 147px;
}
.background_giant_wave {
.background_giant_florals {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -426px -888px;
width: 141px;
height: 147px;
}
.background_glowing_mushroom_cave {
.background_giant_seashell {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -284px -888px;
width: 141px;
height: 147px;
}
.background_gorgeous_greenhouse {
.background_giant_wave {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -142px -888px;
width: 141px;
height: 147px;
}
.background_grand_staircase {
.background_glowing_mushroom_cave {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: 0px -888px;
width: 141px;
height: 147px;
}
.background_graveyard {
.background_gorgeous_greenhouse {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -994px -740px;
width: 141px;
height: 147px;
}
.background_green {
.background_grand_staircase {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -994px -592px;
width: 141px;
height: 147px;
}
.background_guardian_statues {
.background_graveyard {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -994px -444px;
width: 141px;
height: 147px;
}
.background_gumdrop_land {
.background_green {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -994px -296px;
width: 141px;
height: 147px;
}
.background_habit_city_streets {
.background_guardian_statues {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -994px -148px;
width: 141px;
height: 147px;
}
.background_halflings_house {
.background_gumdrop_land {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -994px 0px;
width: 141px;
height: 147px;
}
.background_harvest_feast {
.background_habit_city_streets {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -852px -740px;
width: 141px;
height: 147px;
}
.background_harvest_fields {
.background_halflings_house {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -710px -740px;
width: 141px;
height: 147px;
}
.background_harvest_moon {
.background_harvest_feast {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -568px -740px;
width: 141px;
height: 147px;
}
.background_haunted_house {
.background_harvest_fields {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -426px -740px;
width: 141px;
height: 147px;
}
.background_ice_cave {
.background_harvest_moon {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -284px -740px;
width: 141px;
height: 147px;
}
.background_iceberg {
.background_haunted_house {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -142px -740px;
width: 141px;
height: 147px;
}
.background_idyllic_cabin {
.background_ice_cave {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: 0px -740px;
width: 141px;
height: 147px;
}
.background_island_waterfalls {
.background_iceberg {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -852px -592px;
width: 141px;
height: 147px;
}
.background_kelp_forest {
.background_idyllic_cabin {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -852px -444px;
width: 141px;
height: 147px;
}
.background_lighthouse_shore {
.background_island_waterfalls {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -852px -296px;
width: 141px;
height: 147px;
}
.background_lilypad {
.background_kelp_forest {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -852px -148px;
width: 141px;
height: 147px;
}
.background_magic_beanstalk {
.background_lake_with_floating_lanterns {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -852px 0px;
width: 141px;
height: 147px;
}
.background_magical_candles {
.background_lighthouse_shore {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -710px -592px;
width: 141px;
height: 147px;
}
.background_magical_museum {
.background_lilypad {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -568px -592px;
width: 141px;
height: 147px;
}
.background_marble_temple {
.background_magic_beanstalk {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -426px -592px;
width: 141px;
height: 147px;
}
.background_market {
.background_magical_candles {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -284px -592px;
width: 141px;
height: 147px;
}
.background_meandering_cave {
.background_magical_museum {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -142px -592px;
width: 141px;
height: 147px;
}
.background_medieval_kitchen {
.background_marble_temple {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: 0px -592px;
width: 141px;
height: 147px;
}
.background_midnight_castle {
.background_market {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -710px -444px;
width: 141px;
height: 147px;
}
.background_midnight_clouds {
.background_meandering_cave {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -710px -296px;
width: 141px;
height: 147px;
}
.background_midnight_lake {
.background_medieval_kitchen {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -710px -148px;
width: 141px;
height: 147px;
}
.background_mist_shrouded_mountain {
.background_midnight_castle {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -710px 0px;
width: 141px;
height: 147px;
}
.background_mistiflying_circus {
.background_midnight_clouds {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -568px -444px;
width: 141px;
height: 147px;
}
.background_mountain_lake {
.background_midnight_lake {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -426px -444px;
width: 141px;
height: 147px;
}
.background_mountain_pyramid {
.background_mist_shrouded_mountain {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -284px -444px;
width: 141px;
height: 147px;
}
.background_night_dunes {
.background_mistiflying_circus {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -142px -444px;
width: 141px;
height: 147px;
}
.background_ocean_sunrise {
.background_mountain_lake {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: 0px -444px;
width: 141px;
height: 147px;
}
.background_old_fashioned_bakery {
.background_mountain_pyramid {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -568px -296px;
width: 141px;
height: 147px;
}
.background_on_tree_branch {
.background_night_dunes {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -568px -148px;
width: 141px;
height: 147px;
}
.background_open_waters {
.background_ocean_sunrise {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -568px 0px;
width: 141px;
height: 147px;
}
.background_orchard {
.background_old_fashioned_bakery {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -426px -296px;
width: 141px;
height: 147px;
}
.background_pagodas {
.background_on_tree_branch {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -284px -296px;
width: 141px;
height: 147px;
}
.background_park_with_statue {
.background_open_waters {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -142px -296px;
width: 141px;
height: 147px;
}
.background_pirate_flag {
.background_orchard {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: 0px -296px;
width: 141px;
height: 147px;
}
.background_pixelists_workshop {
.background_pagodas {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -426px -148px;
width: 141px;
height: 147px;
}
.background_pumpkin_patch {
.background_park_with_statue {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -426px 0px;
width: 141px;
height: 147px;
}
.background_purple {
.background_pirate_flag {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -284px -148px;
width: 141px;
height: 147px;
}
.background_pyramids {
.background_pixelists_workshop {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -142px -148px;
width: 141px;
height: 147px;
}
.background_rainbow_meadow {
.background_pumpkin_patch {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: 0px -148px;
width: 141px;
height: 147px;
}
.background_rainbows_end {
.background_purple {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -284px 0px;
width: 141px;
height: 147px;
}
.background_rainforest {
.background_pyramids {
background-image: url('~assets/images/sprites/spritesmith-main-0.png');
background-position: -142px 0px;
width: 141px;
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -1,36 +1,78 @@
.quest_TEMPLATE_FOR_MISSING_IMAGE {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -502px -1510px;
background-position: -502px -1546px;
width: 221px;
height: 39px;
}
.quest_dilatoryDistress3 {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: 0px -232px;
width: 219px;
height: 219px;
}
.quest_dolphin {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -1323px -660px;
width: 219px;
height: 219px;
}
.quest_dustbunnies {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -883px 0px;
width: 219px;
height: 219px;
}
.quest_egg {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -1760px -537px;
width: 165px;
height: 207px;
}
.quest_evilsanta {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -1760px -1198px;
width: 118px;
height: 131px;
}
.quest_evilsanta2 {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -440px -232px;
width: 219px;
height: 219px;
}
.quest_falcon {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -663px 0px;
width: 219px;
height: 219px;
}
.quest_ferret {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -220px -232px;
background-position: -663px -220px;
width: 219px;
height: 219px;
}
.quest_frog {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -660px -1112px;
background-position: -1320px -1112px;
width: 221px;
height: 213px;
}
.quest_ghost_stag {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -1323px -220px;
background-position: -220px -452px;
width: 219px;
height: 219px;
}
.quest_goldenknight1 {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: 0px -452px;
background-position: -440px -452px;
width: 219px;
height: 219px;
}
.quest_goldenknight2 {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -251px -1510px;
background-position: -251px -1546px;
width: 250px;
height: 150px;
}
@@ -42,127 +84,127 @@
}
.quest_gryphon {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -657px -1332px;
background-position: -1314px -1332px;
width: 216px;
height: 177px;
}
.quest_guineapig {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -663px 0px;
background-position: -883px -440px;
width: 219px;
height: 219px;
}
.quest_harpy {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -663px -220px;
background-position: 0px -672px;
width: 219px;
height: 219px;
}
.quest_hedgehog {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -1102px -1112px;
background-position: -220px -1332px;
width: 219px;
height: 186px;
}
.quest_hippo {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -220px -452px;
background-position: -440px -672px;
width: 219px;
height: 219px;
}
.quest_horse {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -440px -452px;
background-position: -660px -672px;
width: 219px;
height: 219px;
}
.quest_kangaroo {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -660px -452px;
background-position: -880px -672px;
width: 219px;
height: 219px;
}
.quest_kraken {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -1091px -1332px;
background-position: -1097px -1332px;
width: 216px;
height: 177px;
}
.quest_lostMasterclasser1 {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -883px -220px;
background-position: -1103px -220px;
width: 219px;
height: 219px;
}
.quest_lostMasterclasser2 {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -883px -440px;
background-position: -1103px -440px;
width: 219px;
height: 219px;
}
.quest_lostMasterclasser3 {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: 0px -672px;
background-position: -1103px -660px;
width: 219px;
height: 219px;
}
.quest_mayhemMistiflying1 {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -1760px -362px;
background-position: -1760px -896px;
width: 150px;
height: 150px;
}
.quest_mayhemMistiflying2 {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -440px -672px;
background-position: -220px -892px;
width: 219px;
height: 219px;
}
.quest_mayhemMistiflying3 {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -660px -672px;
background-position: -440px -892px;
width: 219px;
height: 219px;
}
.quest_monkey {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -880px -672px;
background-position: -660px -892px;
width: 219px;
height: 219px;
}
.quest_moon1 {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -1543px -217px;
background-position: -1543px -868px;
width: 216px;
height: 216px;
}
.quest_moon2 {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -1103px -220px;
background-position: -1100px -892px;
width: 219px;
height: 219px;
}
.quest_moon3 {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -1103px -440px;
background-position: -1323px 0px;
width: 219px;
height: 219px;
}
.quest_moonstone1 {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -1103px -660px;
background-position: -1323px -220px;
width: 219px;
height: 219px;
}
.quest_moonstone2 {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: 0px -892px;
background-position: -1323px -440px;
width: 219px;
height: 219px;
}
.quest_moonstone3 {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -220px -892px;
background-position: -443px 0px;
width: 219px;
height: 219px;
}
@@ -174,67 +216,67 @@
}
.quest_octopus {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: 0px -1332px;
background-position: -440px -1332px;
width: 222px;
height: 177px;
}
.quest_owl {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -880px -892px;
background-position: -220px -1112px;
width: 219px;
height: 219px;
}
.quest_peacock {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -1543px -1085px;
background-position: -1543px -217px;
width: 216px;
height: 216px;
}
.quest_penguin {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -1760px -178px;
background-position: -1760px -353px;
width: 190px;
height: 183px;
}
.quest_pterodactyl {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -443px 0px;
background-position: -880px -1112px;
width: 219px;
height: 219px;
}
.quest_rat {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -1323px -440px;
background-position: -1100px -1112px;
width: 219px;
height: 219px;
}
.quest_rock {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -1543px -434px;
background-position: -1543px 0px;
width: 216px;
height: 216px;
}
.quest_rooster {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -1525px -1332px;
background-position: -1760px 0px;
width: 213px;
height: 174px;
}
.quest_sabretooth {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: 0px -1112px;
background-position: -660px -1112px;
width: 219px;
height: 219px;
}
.quest_seaserpent {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -220px -1112px;
background-position: -440px -1112px;
width: 219px;
height: 219px;
}
.quest_sheep {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -440px -1112px;
background-position: 0px -1112px;
width: 219px;
height: 219px;
}
@@ -246,103 +288,103 @@
}
.quest_sloth {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -1323px -660px;
background-position: -880px -892px;
width: 219px;
height: 219px;
}
.quest_snail {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -882px -1112px;
background-position: 0px -1332px;
width: 219px;
height: 213px;
}
.quest_snake {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -223px -1332px;
background-position: -1543px -1085px;
width: 216px;
height: 177px;
}
.quest_spider {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: 0px -1510px;
background-position: 0px -1546px;
width: 250px;
height: 150px;
}
.quest_squirrel {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -1323px 0px;
background-position: 0px -892px;
width: 219px;
height: 219px;
}
.quest_stoikalmCalamity1 {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -1760px -664px;
background-position: -1760px -745px;
width: 150px;
height: 150px;
}
.quest_stoikalmCalamity2 {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -1100px -892px;
background-position: -1103px 0px;
width: 219px;
height: 219px;
}
.quest_stoikalmCalamity3 {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -660px -892px;
background-position: -220px -672px;
width: 219px;
height: 219px;
}
.quest_taskwoodsTerror1 {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -1760px -513px;
background-position: -1760px -1047px;
width: 150px;
height: 150px;
}
.quest_taskwoodsTerror2 {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -1543px -868px;
background-position: -1543px -434px;
width: 216px;
height: 216px;
}
.quest_taskwoodsTerror3 {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -440px -892px;
background-position: -883px -220px;
width: 219px;
height: 219px;
}
.quest_treeling {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -440px -1332px;
background-position: -880px -1332px;
width: 216px;
height: 177px;
}
.quest_trex {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -1760px 0px;
background-position: -1760px -175px;
width: 204px;
height: 177px;
}
.quest_trex_undead {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -1308px -1332px;
background-position: -663px -1332px;
width: 216px;
height: 177px;
}
.quest_triceratops {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -1103px 0px;
background-position: -660px -452px;
width: 219px;
height: 219px;
}
.quest_turtle {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -220px -672px;
background-position: 0px -452px;
width: 219px;
height: 219px;
}
.quest_unicorn {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -883px 0px;
background-position: -220px -232px;
width: 219px;
height: 219px;
}
@@ -354,265 +396,7 @@
}
.quest_vice1 {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -874px -1332px;
background-position: -1531px -1332px;
width: 216px;
height: 177px;
}
.quest_vice2 {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -440px -232px;
width: 219px;
height: 219px;
}
.quest_vice3 {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -1322px -1112px;
width: 216px;
height: 177px;
}
.quest_whale {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: 0px -232px;
width: 219px;
height: 219px;
}
.quest_yarn {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -1543px 0px;
width: 216px;
height: 216px;
}
.quest_atom1_soapBars {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -1898px -884px;
width: 48px;
height: 51px;
}
.quest_dilatoryDistress1_blueFins {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -1898px -1298px;
width: 51px;
height: 48px;
}
.quest_dilatoryDistress1_fireCoral {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -1911px -362px;
width: 48px;
height: 51px;
}
.quest_egg_plainEgg {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -1911px -414px;
width: 48px;
height: 51px;
}
.quest_evilsanta2_branches {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -1911px -513px;
width: 48px;
height: 51px;
}
.quest_evilsanta2_tracks {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -1898px -815px;
width: 54px;
height: 60px;
}
.quest_goldenknight1_testimony {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -1898px -953px;
width: 48px;
height: 51px;
}
.quest_lostMasterclasser1_ancientTome {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -1829px -1436px;
width: 33px;
height: 42px;
}
.quest_lostMasterclasser1_forbiddenTome {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -1898px -1367px;
width: 33px;
height: 42px;
}
.quest_lostMasterclasser1_hiddenTome {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -1911px -768px;
width: 33px;
height: 42px;
}
.quest_mayhemMistiflying2_mistifly1 {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -1911px -565px;
width: 48px;
height: 51px;
}
.quest_mayhemMistiflying2_mistifly2 {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -1911px -664px;
width: 48px;
height: 51px;
}
.quest_mayhemMistiflying2_mistifly3 {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -1911px -716px;
width: 48px;
height: 51px;
}
.quest_moon1_shard {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -1911px -466px;
width: 42px;
height: 42px;
}
.quest_moonstone1_moonstone {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -1932px -1367px;
width: 30px;
height: 30px;
}
.quest_stoikalmCalamity2_icicleCoin {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -1898px -1022px;
width: 48px;
height: 51px;
}
.quest_taskwoodsTerror2_brownie {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -1898px -1091px;
width: 48px;
height: 51px;
}
.quest_taskwoodsTerror2_dryad {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -1898px -1160px;
width: 48px;
height: 51px;
}
.quest_taskwoodsTerror2_pixie {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -1898px -1229px;
width: 48px;
height: 51px;
}
.quest_vice2_lightCrystal {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -1911px -617px;
width: 40px;
height: 40px;
}
.inventory_quest_scroll_alligator {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -1829px -1022px;
width: 68px;
height: 68px;
}
.inventory_quest_scroll_armadillo {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -1760px -1091px;
width: 68px;
height: 68px;
}
.inventory_quest_scroll_atom1 {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -1760px -815px;
width: 68px;
height: 68px;
}
.inventory_quest_scroll_atom1_locked {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -1829px -1091px;
width: 68px;
height: 68px;
}
.inventory_quest_scroll_atom2 {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -1760px -1229px;
width: 68px;
height: 68px;
}
.inventory_quest_scroll_atom2_locked {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -1829px -1160px;
width: 68px;
height: 68px;
}
.inventory_quest_scroll_atom3 {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -1760px -1298px;
width: 68px;
height: 68px;
}
.inventory_quest_scroll_atom3_locked {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -1829px -1229px;
width: 68px;
height: 68px;
}
.inventory_quest_scroll_axolotl {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -1829px -1298px;
width: 68px;
height: 68px;
}
.inventory_quest_scroll_badger {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -1760px -1367px;
width: 68px;
height: 68px;
}
.inventory_quest_scroll_basilist {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -1829px -1367px;
width: 68px;
height: 68px;
}
.inventory_quest_scroll_beetle {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -1760px -1160px;
width: 68px;
height: 68px;
}
.inventory_quest_scroll_bronze {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -1760px -1436px;
width: 68px;
height: 68px;
}
.inventory_quest_scroll_bunny {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -1760px -1022px;
width: 68px;
height: 68px;
}
.inventory_quest_scroll_butterfly {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -1829px -953px;
width: 68px;
height: 68px;
}
.inventory_quest_scroll_cheetah {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -1760px -953px;
width: 68px;
height: 68px;
}
.inventory_quest_scroll_cow {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -1829px -884px;
width: 68px;
height: 68px;
}
.inventory_quest_scroll_dilatoryDistress1 {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -1829px -815px;
width: 68px;
height: 68px;
}
.inventory_quest_scroll_dilatory_derby {
background-image: url('~assets/images/sprites/spritesmith-main-12.png');
background-position: -1760px -884px;
width: 68px;
height: 68px;
}
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
Binary file not shown.

Before

Width:  |  Height:  |  Size: 102 KiB

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 492 KiB

After

Width:  |  Height:  |  Size: 491 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 592 KiB

After

Width:  |  Height:  |  Size: 610 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 112 KiB

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 193 KiB

After

Width:  |  Height:  |  Size: 182 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 424 KiB

After

Width:  |  Height:  |  Size: 414 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 190 KiB

After

Width:  |  Height:  |  Size: 207 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 152 KiB

After

Width:  |  Height:  |  Size: 155 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 140 KiB

After

Width:  |  Height:  |  Size: 144 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 136 KiB

After

Width:  |  Height:  |  Size: 132 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 173 KiB

After

Width:  |  Height:  |  Size: 166 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 135 KiB

After

Width:  |  Height:  |  Size: 140 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 152 KiB

After

Width:  |  Height:  |  Size: 148 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 78 KiB

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 154 KiB

After

Width:  |  Height:  |  Size: 152 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 148 KiB

After

Width:  |  Height:  |  Size: 153 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 182 KiB

After

Width:  |  Height:  |  Size: 175 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 160 KiB

After

Width:  |  Height:  |  Size: 163 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 163 KiB

After

Width:  |  Height:  |  Size: 162 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 66 KiB

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 114 KiB

After

Width:  |  Height:  |  Size: 109 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 118 KiB

After

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 123 KiB

After

Width:  |  Height:  |  Size: 121 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 151 KiB

After

Width:  |  Height:  |  Size: 155 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 113 KiB

After

Width:  |  Height:  |  Size: 114 KiB

+37 -30
View File
@@ -1,13 +1,10 @@
// Colors taken from the Habitica Color Palette
// The palette is available at TODO ADD LINK TO PALETTE PDF
// The palette is available at https://habitica.fandom.com/wiki/Guidance_for_Comrades?file=Color_palette_official.png
// The colors are named from the darkest to the lightest
$white: #FFFFFF;
$black: #1A181D;
$header-color: #D5C8FF;
$header-dark-background: #271B3D;
$gray-10: #34313A;
$gray-50: #4E4A57;
$gray-100: #686274;
@@ -18,13 +15,7 @@ $gray-500: #E1E0E3;
$gray-600: #EDECEE;
$gray-700: #F9F9F9;
$purple-50: #36205D;
$purple-100: #432874;
$purple-200: #4F2A93;
$purple-300: #6133B4;
$purple-400: #9A62FF;
$purple-500: #BDA8FF;
$red-1: #6C0406;
$red-10: #F23035;
$red-50: #F74E52;
$red-100: #FF6165;
@@ -35,39 +26,55 @@ $maroon-50: #C92B2B;
$maroon-100: #DE3F3F;
$maroon-500: #F19595;
$yellow-5: #EE9109;
$yellow-10: #FFA623;
$yellow-50: #FFB445;
$yellow-100: #FFBE5D;
$yellow-500: #FFD9A0;
$orange-1: #7F3300;
$orange-10: #F47825;
$orange-50: #FA8537;
$orange-100: #FF944C;
$orange-500: #FFBF98;
$orange-500: #FFC8A7;
$yellow-1: #794B00;
$yellow-5: #EE9109;
$yellow-10: #FFA624;
$yellow-50: #FFB445;
$yellow-100: #FFBE5D;
$yellow-500: #FEDEAD;
$green-1: #005737;
$green-10: #1CA372;
$green-50: #20B780;
$green-100: #24CC8F;
$green-500: #77F4C7;
$teal-1: #005158;
$teal-10: #26A0AB;
$teal-50: #34B5C1;
$teal-100: #3BCAD7;
$teal-500: #8EEDF6;
$blue-1: #033F5E;
$blue-10: #2995CD;
$blue-50: #46A7D9;
$blue-100: #50B5E9;
$blue-500: #A9DCF6;
$teal-10: #20B2BF;
$teal-50: #3BCAD7;
$teal-100: #5EDDE9;
$teal-500: #A5F7FF;
$purple-50: #36205D;
$purple-100: #432874;
$purple-200: #4F2A93;
$purple-300: #6133B4;
$purple-400: #925CF3;
$purple-500: #BDA8FF;
$purple-600: #D5C8FF;
$green-10: #24CC8F;
$green-50: #3FDAA2;
$green-100: #5AEAB2;
$green-500: #A6FFDF;
$header-color: #D5C8FF;
$header-dark-background: #271B3D;
$suggested-item-color: #D5C8FF;
$healer-color: #cf8229;
$healer-color: #FFA624;
$rogue-color: #4F2A93;
$warrior-color: #B01515;
$wizard-color: #1f6ea2;
$warrior-color: #C92B2B;
$wizard-color: #2995CD;
$gems-color: #24CC8F;
$gold-color: #FFA623;
$gold-color: #FFA624;
$hourglass-color: #2995CD;
+86 -81
View File
@@ -1,81 +1,86 @@
.create-task-area {
position: absolute;
right: 24px;
top: -23px;
z-index: 999;
height: 60px;
}
.slide-tasks-btns-leave-active, .slide-tasks-btns-enter-active {
max-width: 240px;
overflow-x: hidden;
transition: all 0.3s cubic-bezier(0, 1, 0.5, 1);
}
.slide-tasks-btns-enter, .slide-tasks-btns-leave-to {
max-width: 0;
opacity: 0;
}
.rounded-btn {
margin-left: 8px;
background: $white;
width: 48px;
height: 48px;
display: flex;
justify-content: center;
align-items: center;
border-radius: 100px;
box-shadow: 0 2px 2px 0 rgba($black, 0.16), 0 1px 4px 0 rgba($black, 0.12);
cursor: pointer;
color: $gray-200;
&:hover:not(.create-btn) {
color: $purple-400;
box-shadow: 0 1px 8px 0 rgba($black, 0.12), 0 4px 4px 0 rgba($black, 0.16);
}
.svg-icon {
width: 20px;
height: 20px;
&.icon-habit {
width: 24px;
height: 16px;
}
&.icon-daily {
width: 21.6px;
height: 18px;
}
&.icon-todo {
width: 18px;
height: 18px;
}
&.icon-reward {
width: 23.4px;
height: 18px;
}
}
}
.create-btn {
color: $white;
background-color: $green-10;
.svg-icon {
width: 16px;
height: 16px;
transition: transform 0.3s cubic-bezier(0, 1, 0.5, 1);
}
&.open {
background: $gray-200 !important;
.svg-icon {
transform: rotate(-45deg);
}
}
}
.create-task-area {
position: absolute;
right: 24px;
top: -24px;
z-index: 999;
align-items: center;
}
.slide-tasks-btns-leave-active, .slide-tasks-btns-enter-active {
max-width: 320px;
transition: all 0.3s cubic-bezier(0, 1, 0.5, 1);
}
.slide-tasks-btns-enter, .slide-tasks-btns-leave-to {
max-width: 0;
opacity: 0;
overflow-x: hidden;
}
.diamond-btn {
margin-left: 24px;
background: $white;
width: 40px;
height: 40px;
display: flex;
justify-content: center;
align-items: center;
border-radius: 4px;
box-shadow: 0 2px 2px 0 rgba($black, 0.16), 0 1px 4px 0 rgba($black, 0.12);
cursor: pointer;
color: $gray-200;
transform: rotate(45deg);
&:hover:not(.create-btn) {
color: $purple-400;
box-shadow: 0 1px 8px 0 rgba($black, 0.12), 0 4px 4px 0 rgba($black, 0.16);
}
.svg-icon {
width: 20px;
height: 20px;
transform: rotate(-45deg);
&.icon-habit {
width: 24px;
height: 16px;
}
&.icon-daily {
width: 21.6px;
height: 18px;
}
&.icon-todo {
width: 18px;
height: 18px;
}
&.icon-reward {
width: 23.4px;
height: 18px;
}
}
}
.create-btn {
color: $white;
background-color: $green-100;
height: 48px;
width: 48px;
.svg-icon {
width: 16px;
height: 16px;
transform: rotate(-45deg);
transition: transform 0.3s cubic-bezier(0, 1, 0.5, 1);
}
&.open {
background: $gray-200 !important;
.svg-icon {
transform: rotate(-90deg);
}
}
}
+5
View File
@@ -12,6 +12,11 @@
}
}
.popover-title-only {
color: $white;
margin-bottom: 24px;
}
.popover-body {
padding: 12px 16px;
text-align: center;
+8 -8
View File
@@ -139,7 +139,7 @@
&-good { // green
&-control {
&-bg {
background: $green-10 !important;
background: $green-100 !important;
&:hover {
.habit-control { background: rgba(26, 24, 29, 0.48) !important; }
.daily-todo-control { background: rgba(255, 255, 255, 0.72) !important; }
@@ -151,7 +151,7 @@
}
&-modal {
&-bg { background: $green-10 !important; }
&-bg { background: $green-100 !important; }
&-icon { color: $green-10 !important; }
&-text { color: #1ca372 !important; }
&-option-disabled:hover {
@@ -168,7 +168,7 @@
&-better { // teal
&-control {
&-bg {
background: $teal-50 !important;
background: $teal-100 !important;
&:hover {
.habit-control { background: rgba(26, 24, 29, 0.48) !important; }
.daily-todo-control { background: rgba(255, 255, 255, 0.72) !important; }
@@ -176,19 +176,19 @@
}
&-inner-habit { background: rgba(26, 24, 29, 0.24) !important; }
&-inner-daily-todo { background: #8dedf6 !important; }
&-checkbox { color: $teal-50 !important; }
&-checkbox { color: $teal-100 !important; }
}
&-modal {
&-bg { background: $teal-50 !important; }
&-icon { color: $teal-50 !important; }
&-bg { background: $teal-100 !important; }
&-icon { color: $teal-100 !important; }
&-text { color: $teal-10 !important; }
&-option-disabled:hover {
.svg-icon { color: $teal-50 !important; }
.svg-icon { color: $teal-100 !important; }
.option-item-label { color: $teal-10 !important; }
}
&-habit-control-disabled:hover {
.habit-control { background: $teal-50 !important; }
.habit-control { background: $teal-100 !important; }
.option-item-label { color: $teal-10 !important; }
}
}
+5 -5
View File
@@ -2,8 +2,8 @@
// possible values are: normal, fall, habitoween, thanksgiving, winter, nye, birthday, valentines, spring, summer
// more to be added on future seasons
$npc_market_flavor: 'summer';
$npc_quests_flavor: 'summer';
$npc_seasonal_flavor: 'summer';
$npc_timetravelers_flavor: 'summer';
$npc_tavern_flavor: 'summer';
$npc_market_flavor: 'normal';
$npc_quests_flavor: 'normal';
$npc_seasonal_flavor: 'normal';
$npc_timetravelers_flavor: 'normal';
$npc_tavern_flavor: 'normal';
@@ -164,31 +164,30 @@ export default {
classGear (heroClass) {
if (heroClass === 'rogue') {
return {
armor: 'armor_special_summer2019Rogue',
head: 'head_special_summer2019Rogue',
shield: 'shield_special_summer2019Rogue',
weapon: 'weapon_special_summer2019Rogue',
armor: 'armor_rogue_5',
head: 'head_rogue_5',
shield: 'shield_rogue_6',
weapon: 'weapon_rogue_6',
};
} else if (heroClass === 'wizard') {
return {
armor: 'armor_special_summer2019Mage',
head: 'head_special_summer2019Mage',
shield: 'shield_special_summer2019Mage',
weapon: 'weapon_special_summer2019Mage',
armor: 'armor_wizard_5',
head: 'head_wizard_5',
weapon: 'weapon_wizard_6',
};
} else if (heroClass === 'healer') {
return {
armor: 'armor_special_summer2019Healer',
head: 'head_special_summer2019Healer',
shield: 'shield_special_summer2019Healer',
weapon: 'weapon_special_summer2019Healer',
armor: 'armor_healer_5',
head: 'head_healer_5',
shield: 'shield_healer_5',
weapon: 'weapon_healer_6',
};
} else {
return {
armor: 'armor_special_summer2019Warrior',
head: 'head_special_summer2019Warrior',
shield: 'shield_special_summer2019Warrior',
weapon: 'weapon_special_summer2019Warrior',
armor: 'armor_warrior_5',
head: 'head_warrior_5',
shield: 'shield_warrior_5',
weapon: 'weapon_warrior_6',
};
}
},
+1 -1
View File
@@ -113,11 +113,11 @@
.footer-row {
margin: 0;
flex: 0 1 auto;
z-index: 17;
}
footer {
color: #c3c0c7;
z-index: 17;
padding-bottom: 3em;
a {
+1 -1
View File
@@ -139,7 +139,7 @@ export default {
let val = '28px';
if (!this.avatarOnly) {
if (this.member.items.currentPet) val = '24.5px';
if (this.member.items.currentPet) val = '24px';
if (this.member.items.currentMount) val = '0px';
}
@@ -1,6 +1,6 @@
<template lang="pug">
.row
challenge-modal(v-on:updatedChallenge='updatedChallenge')
challenge-modal(@updatedChallenge='updatedChallenge')
leave-challenge-modal(:challengeId='challenge._id')
close-challenge-modal(:members='members', :challengeId='challenge._id', :prize='challenge.prize')
challenge-member-progress-modal(:challengeId='challenge._id')
@@ -47,8 +47,8 @@
@cancel="cancelTaskModal()",
ref="taskModal",
:challengeId="challengeId",
v-on:taskCreated='taskCreated',
v-on:taskEdited='taskEdited',
@taskCreated='taskCreated',
@taskEdited='taskEdited',
@taskDestroyed='taskDestroyed'
)
.row
@@ -57,7 +57,8 @@
:type="column",
:key="column",
:taskListOverride='tasksByType[column]',
v-on:editTask="editTask",
@editTask="editTask",
@taskDestroyed="taskDestroyed",
v-if='tasksByType[column].length > 0')
.col-12.col-md-4.sidebar.standard-page
.button-container(v-if='canJoin')
+46 -12
View File
@@ -3,8 +3,8 @@
.autocomplete-results.d-flex.align-items-center(
v-for='result in searchResults',
@click='select(result)',
@mouseenter='result.hover = true',
@mouseleave='result.hover = false',
@mouseenter='setHover(result)',
@mouseleave='resetSelection()',
:class='{"hover-background": result.hover}',
)
span
@@ -27,6 +27,7 @@
.hover-background {
background-color: rgba(213, 200, 255, 0.32);
cursor: pointer;
}
.hover-foreground {
@@ -86,6 +87,7 @@ export default {
tier9,
tierNPC,
}),
selected: null,
};
},
computed: {
@@ -120,12 +122,6 @@ export default {
mounted () {
this.grabUserNames();
},
created () {
document.addEventListener('keyup', this.handleEsc);
},
destroyed () {
document.removeEventListener('keyup', this.handleEsc);
},
watch: {
text (newText) {
if (!newText[newText.length - 1] || newText[newText.length - 1] === ' ') {
@@ -154,6 +150,7 @@ export default {
this.searchActive = false;
this.searchEscaped = false;
this.tmpSelections = [];
this.resetSelection();
},
grabUserNames () {
let usersThatMessage = groupBy(this.chat, 'user');
@@ -189,13 +186,50 @@ export default {
const targetName = `${result.username || result.displayName} `;
newText = newText.replace(new RegExp(`${this.currentSearch}$`), targetName);
this.$emit('select', newText);
this.resetSelection();
},
handleEsc (e) {
if (e.keyCode === 27) {
this.searchActive = false;
this.searchEscaped = true;
setHover (result) {
this.resetSelection();
result.hover = true;
},
clearHover () {
for (const selection of this.searchResults) {
selection.hover = false;
}
},
resetSelection () {
this.clearHover();
this.selected = null;
},
selectNext () {
if (this.searchResults.length > 0) {
this.clearHover();
this.selected = this.selected === null ?
0 :
(this.selected + 1) % this.searchResults.length;
this.searchResults[this.selected].hover = true;
}
},
selectPrevious () {
if (this.searchResults.length > 0) {
this.clearHover();
this.selected = this.selected === null ?
this.searchResults.length - 1 :
(this.selected - 1 + this.searchResults.length) % this.searchResults.length;
this.searchResults[this.selected].hover = true;
}
},
makeSelection () {
if (this.searchResults.length > 0 && this.selected !== null) {
const result = this.searchResults[this.selected];
this.select(result);
}
},
cancel () {
this.searchActive = false;
this.searchEscaped = true;
this.resetSelection();
},
},
mixins: [styleHelper],
};
+14 -3
View File
@@ -1,8 +1,7 @@
<template lang="pug">
div
.mentioned-icon(v-if='isUserMentioned')
.message-hidden(v-if='!inbox && msg.flagCount === 1 && user.contributor.admin') Message flagged once, not hidden
.message-hidden(v-if='!inbox && msg.flagCount > 1 && user.contributor.admin') Message hidden
.message-hidden(v-if='!inbox && user.contributor.admin && msg.flagCount') {{flagCountDescription}}
.card-body
user-link(:userId="msg.uuid", :name="msg.user", :backer="msg.backer", :contributor="msg.contributor")
p.time
@@ -137,7 +136,8 @@ import copyIcon from 'assets/svg/copy.svg';
import likeIcon from 'assets/svg/like.svg';
import likedIcon from 'assets/svg/liked.svg';
import reportIcon from 'assets/svg/report.svg';
import {highlightUsers} from '../../libs/highlightUsers';
import { highlightUsers } from '../../libs/highlightUsers';
import { CHAT_FLAG_LIMIT_FOR_HIDING, CHAT_FLAG_FROM_SHADOW_MUTE } from '../../../common/script/constants';
export default {
components: {userLink},
@@ -210,6 +210,12 @@ export default {
isMessageReported () {
return this.msg.flags && this.msg.flags[this.user.id] || this.reported;
},
flagCountDescription () {
if (!this.msg.flagCount) return '';
if (this.msg.flagCount < CHAT_FLAG_LIMIT_FOR_HIDING) return 'Message flagged once, not hidden';
if (this.msg.flagCount < CHAT_FLAG_FROM_SHADOW_MUTE) return 'Message hidden';
return 'Message hidden (shadow-muted)';
},
},
methods: {
async like () {
@@ -273,5 +279,10 @@ export default {
return habiticaMarkdown.render(String(text));
},
},
mounted () {
this.CHAT_FLAG_LIMIT_FOR_HIDING = CHAT_FLAG_LIMIT_FOR_HIDING;
this.CHAT_FLAG_FROM_SHADOW_MUTE = CHAT_FLAG_FROM_SHADOW_MUTE;
this.$emit('chat-card-mounted', this.msg.id);
},
};
</script>
@@ -1,8 +1,14 @@
<template lang="pug">
.container-fluid
.container-fluid(ref="container")
.row
.col-12
copy-as-todo-modal(:group-type='groupType', :group-name='groupName', :group-id='groupId')
.row.loadmore
div(v-if="canLoadMore")
.loadmore-divider
button.btn.btn-secondary(@click='triggerLoad()') {{ $t('loadEarlierMessages') }}
.loadmore-divider
h2.col-12.loading(v-show="isLoading") {{ $t('loading') }}
div(v-for="(msg, index) in messages", v-if='chat && canViewFlag(msg)', :class='{row: inbox}')
.d-flex(v-if='user._id !== msg.uuid', :class='{"flex-grow-1": inbox}')
avatar.avatar-left(
@@ -21,7 +27,8 @@
:groupId='groupId',
@message-liked='messageLiked',
@message-removed='messageRemoved',
@show-member-modal='showMemberModal')
@show-member-modal='showMemberModal',
@chat-card-mounted='itemWasMounted')
.d-flex(v-if='user._id === msg.uuid', :class='{"flex-grow-1": inbox}')
.card(:class='{"col-10": inbox}')
chat-card(
@@ -30,7 +37,8 @@
:groupId='groupId',
@message-liked='messageLiked',
@message-removed='messageRemoved',
@show-member-modal='showMemberModal')
@show-member-modal='showMemberModal',
@chat-card-mounted='itemWasMounted')
avatar(
v-if='msg.userStyles || (cachedProfileData[msg.uuid] && !cachedProfileData[msg.uuid].rejected)',
:member="msg.userStyles || cachedProfileData[msg.uuid]",
@@ -49,6 +57,34 @@
width: 10%;
min-width: 7rem;
}
.loadmore {
justify-content: center;
> div {
display: flex;
width: 100%;
align-items: center;
button {
text-align: center;
color: $gray-50;
margin-top: 12px;
margin-bottom: 24px;
}
}
}
.loadmore-divider {
height: 1px;
background-color: $gray-500;
flex: 1;
margin-left: 24px;
margin-right: 24px;
&:last-of-type {
margin-right: 0;
}
}
.avatar-left {
margin-left: -1.5rem;
@@ -97,6 +133,8 @@
.message-scroll .d-flex {
min-width: 1px;
}
</style>
<script>
@@ -120,6 +158,9 @@ export default {
groupType: {},
groupId: {},
groupName: {},
isLoading: Boolean,
canLoadMore: Boolean,
},
components: {
copyAsTodoModal,
@@ -142,6 +183,8 @@ export default {
currentProfileLoadedCount: 0,
currentProfileLoadedEnd: 10,
loading: false,
handleScrollBack: false,
lastOffset: -1,
};
},
computed: {
@@ -153,15 +196,24 @@ export default {
return this.chat;
},
},
watch: {
messages () {
this.loadProfileCache();
},
},
methods: {
handleScroll () {
this.loadProfileCache(window.scrollY / 1000);
},
async triggerLoad () {
const container = this.$refs.container;
// get current offset
this.lastOffset = container.scrollTop - (container.scrollHeight - container.clientHeight);
// disable scroll
container.style.overflowY = 'hidden';
const canLoadMore = this.inbox && !this.isLoading && this.canLoadMore;
if (canLoadMore) {
await this.$emit('triggerLoad');
this.handleScrollBack = true;
}
},
canViewFlag (message) {
if (message.uuid === this.user._id) return true;
if (!message.flagCount || message.flagCount < 2) return true;
@@ -252,6 +304,20 @@ export default {
this.$router.push({name: 'userProfile', params: {userId: profile._id}});
}
},
itemWasMounted: debounce(function itemWasMounted () {
if (this.handleScrollBack) {
this.handleScrollBack = false;
const container = this.$refs.container;
const offset = container.scrollHeight - container.clientHeight;
const newOffset = offset + this.lastOffset;
container.scrollTo(0, newOffset);
// enable scroll again
container.style.overflowY = 'scroll';
}
}, 50),
messageLiked (message) {
const chatIndex = findIndex(this.chat, chatMessage => {
return chatMessage.id === message.id;
@@ -20,7 +20,7 @@
.create-task-area.d-flex(v-if='canCreateTasks')
transition(name="slide-tasks-btns")
.d-flex(v-if="openCreateBtn")
.create-task-btn.rounded-btn(
.create-task-btn.diamond-btn(
v-for="type in columns",
:key="type",
@click="createTask(type)",
@@ -28,7 +28,7 @@
)
.svg-icon(v-html="icons[type]", :class='`icon-${type}`')
#create-task-btn.create-btn.rounded-btn.btn.btn-success(
#create-task-btn.create-btn.diamond-btn.btn.btn-success(
@click="openCreateBtn = !openCreateBtn",
:class="{open: openCreateBtn}",
)
+45
View File
@@ -11,11 +11,17 @@
:class='{"user-entry": newMessage}',
@keydown='updateCarretPosition',
@keyup.ctrl.enter='sendMessageShortcut()',
@keydown.tab='handleTab($event)',
@keydown.up='selectPreviousAutocomplete($event)',
@keydown.down='selectNextAutocomplete($event)',
@keydown.enter='selectAutocomplete($event)',
@keydown.esc='handleEscape($event)',
@paste='disableMessageSendShortcut()',
maxlength='3000'
)
span {{ currentLength }} / 3000
autocomplete(
ref='autocomplete',
:text='newMessage',
v-on:select="selectedAutocomplete",
:textbox='textbox',
@@ -165,6 +171,45 @@
}, 500);
},
handleTab (e) {
if (this.$refs.autocomplete.searchActive) {
e.preventDefault();
if (e.shiftKey) {
this.$refs.autocomplete.selectPrevious();
} else {
this.$refs.autocomplete.selectNext();
}
}
},
handleEscape (e) {
if (this.$refs.autocomplete.searchActive) {
e.preventDefault();
this.$refs.autocomplete.cancel();
}
},
selectNextAutocomplete (e) {
if (this.$refs.autocomplete.searchActive) {
e.preventDefault();
this.$refs.autocomplete.selectNext();
}
},
selectPreviousAutocomplete (e) {
if (this.$refs.autocomplete.searchActive) {
e.preventDefault();
this.$refs.autocomplete.selectPrevious();
}
},
selectAutocomplete (e) {
if (this.$refs.autocomplete.searchActive) {
e.preventDefault();
this.$refs.autocomplete.makeSelection();
}
},
selectedAutocomplete (newText) {
this.newMessage = newText;
},
+21 -15
View File
@@ -3,7 +3,7 @@
small.muted(v-html="$t('blurbHallContributors')")
.well
div(v-if='user.contributor.admin')
h2 {{ $t('rewardUser') }}
h2 Reward User
.row
.form.col-6(v-if='!hero.profile')
@@ -11,33 +11,33 @@
input.form-control(type='text', v-model='heroID', :placeholder="'User ID or Username'")
.form-group
button.btn.btn-secondary(@click='loadHero(heroID)')
| {{ $t('loadUser') }}
| Load User
.row
.form.col-6(v-if='hero && hero.profile', submit='saveHero(hero)')
router-link(:to="{'name': 'userProfile', 'params': {'userId': hero._id}}")
h3 {{hero.profile.name}}
h3 @{{hero.auth.local.username}} &nbsp; / &nbsp; {{hero.profile.name}}
.form-group
input.form-control(type='text', v-model='hero.contributor.text', :placeholder="$t('contribTitle')")
label Contributor Title
input.form-control(type='text', v-model='hero.contributor.text')
small Common titles: <strong>Ambassador, Artisan, Bard, Blacksmith, Challenger, Comrade, Fletcher, Linguist, Linguistic Scribe, Scribe, Socialite, Storyteller</strong>. Rare titles: Advisor, Chamberlain, Designer, Mathematician, Shirtster, Spokesperson, Statistician, Tinker, Transcriber, Troubadour.
.form-group
label {{ $t('contribLevel') }}
label Contributor Tier
input.form-control(type='number', v-model='hero.contributor.level')
small {{ $t('contribHallText') }}
small 1-7 for normal contributors, 8 for moderators, 9 for staff. This determines which items, pets, and mounts are available, and name-tag coloring. Tiers 8 and 9 are automatically given admin status.
|&nbsp;
a(target='_blank', href='https://trello.com/c/wkFzONhE/277-contributor-gear') {{ $t('moreDetails') }}
a(target='_blank', href='https://trello.com/c/wkFzONhE/277-contributor-gear') More details (1-7)
|,&nbsp;
a(target='_blank', href='https://github.com/HabitRPG/habitica/issues/3801') {{ $t('moreDetails2') }}
a(target='_blank', href='https://github.com/HabitRPG/habitica/issues/3801') more details (8-9)
.form-group
textarea.form-control(cols=5, :placeholder="$t('contributions')", v-model='hero.contributor.contributions')
//include ../../shared/formattiv-help
hr
label Contributions
textarea.form-control(cols=5, v-model='hero.contributor.contributions')
.form-group
label {{ $t('balance') }}
label Balance
input.form-control(type='number', step="any", v-model='hero.balance')
small
span {{ hero.balance }}&nbsp;
span(v-html='$t("notGems")')
span '{{ hero.balance }}' is in USD, <em>not</em> in Gems. E.g., if this number is 1, it means 4 Gems. Only use this option when manually granting Gems to players, don't use it when granting contributor tiers. Contrib tiers will automatically add Gems.
.accordion
.accordion-group(heading='Items')
h4.expand-toggle(:class="{'open': expandItems}", @click="expandItems = !expandItems") Update Item
@@ -56,6 +56,11 @@
h4.expand-toggle(:class="{'open': expandAuth}", @click="expandAuth = !expandAuth") Auth
div(v-if="expandAuth")
pre {{hero.auth}}
.form-group
.checkbox
label
input(type='checkbox', v-if='hero.flags', v-model='hero.flags.chatShadowMuted')
strong Chat Shadow Muting On
.form-group
.checkbox
label
@@ -71,7 +76,7 @@
// Add backer stuff like tier, disable adds, etcs
.form-group
button.form-control.btn.btn-primary(@click='saveHero()')
| {{ $t('save') }}
| Save
.table-responsive
table.table.table-striped
@@ -180,6 +185,7 @@ export default {
if (!this.hero.flags) {
this.hero.flags = {
chatRevoked: false,
chatShadowMuted: false,
};
}
this.expandItems = false;
+2 -7
View File
@@ -402,13 +402,8 @@
return;
}
if (this.item.currency === 'gems' &&
!confirm(this.$t('purchaseFor', { cost: this.item.value * this.selectedAmountToBuy }))) {
return;
}
if (this.item.currency === 'hourglasses' &&
!confirm(this.$t('purchaseForHourglasses', { cost: this.item.value }))) {
const shouldConfirmPurchase = this.item.currency === 'gems' || this.item.currency === 'hourglasses';
if (shouldConfirmPurchase && !this.confirmPurchase(this.item.currency, this.item.value * this.selectedAmountToBuy)) {
return;
}
@@ -3,11 +3,11 @@
h2(v-once) {{ $t('filter') }}
.form-group
checkbox(
v-for="category in categories",
:key="category.identifier",
:id="`category-${category.identifier}`",
:checked.sync="viewOptions[category.identifier].selected",
:text="category.text"
v-for="viewOptionKey in Object.keys(viewOptions)",
:key="viewOptionKey",
:id="`category-${viewOptionKey}`",
:checked.sync="viewOptions[viewOptionKey].selected",
:text="viewOptions[viewOptionKey].text"
)
div.form-group.clearfix
h3.float-left(v-once) {{ $t('hideLocked') }}
@@ -27,7 +27,7 @@
import Checkbox from 'client/components/ui/checkbox';
import toggleSwitch from 'client/components/ui/toggleSwitch';
export default {
props: ['hidePinned', 'hideLocked', 'categories', 'viewOptions'],
props: ['hidePinned', 'hideLocked', 'viewOptions'],
components: {
Checkbox,
toggleSwitch,
@@ -4,7 +4,6 @@
.form-group
input.form-control.input-search(type="text", v-model="searchText", :placeholder="$t('search')")
market-filter(
:categories="categories",
:hideLocked.sync="hideLocked",
:hidePinned.sync="hidePinned",
:viewOptions="viewOptions"
@@ -39,7 +38,7 @@
span.text {{ $t(ctx.item.id) }}
div(
v-for="category in categories",
v-if="!anyFilterSelected || viewOptions[category.identifier].selected && category.identifier !== 'equipment'"
v-if="!anyFilterSelected || viewOptions[category.identifier].selected"
)
h4 {{ category.text }}
category-row(
@@ -197,7 +196,12 @@ export default {
},
data () {
return {
viewOptions: {},
viewOptions: {
equipment: {
selected: false,
text: this.$t('equipment'),
},
},
searchText: null,
searchTextThrottled: null,
@@ -238,11 +242,6 @@ export default {
...this.market.categories,
];
categories.push({
identifier: 'equipment',
text: this.$t('equipment'),
});
categories.push({
identifier: 'cards',
text: this.$t('cards'),
@@ -291,6 +290,7 @@ export default {
if (!this.viewOptions[category.identifier]) {
this.$set(this.viewOptions, category.identifier, {
selected: false,
text: category.text,
});
}
});
@@ -265,6 +265,9 @@
this.$emit('change', $event);
},
buyItem () {
if (!this.confirmPurchase(this.item.currency, this.item.value * this.selectedAmountToBuy)) {
return;
}
this.makeGenericPurchase(this.item, 'buyQuestModal', this.selectedAmountToBuy);
this.purchased(this.item.text);
this.hideDialog();
+2 -2
View File
@@ -75,7 +75,7 @@
.create-task-area.d-flex
transition(name="slide-tasks-btns")
.d-flex(v-if="openCreateBtn")
.create-task-btn.rounded-btn(
.create-task-btn.diamond-btn(
v-for="type in columns",
:key="type",
@click="createTask(type)",
@@ -83,7 +83,7 @@
)
.svg-icon(v-html="icons[type]", :class='`icon-${type}`')
#create-task-btn.create-btn.rounded-btn.btn.btn-success(
#create-task-btn.create-btn.diamond-btn.btn.btn-success(
@click="openCreateBtn = !openCreateBtn",
:class="{open: openCreateBtn}",
)
+139 -66
View File
@@ -34,21 +34,25 @@
.svg-icon(v-html="tierIcon(conversation)")
.time
span.mr-1(v-if='conversation.username') @{{ conversation.username }}
span {{ conversation.date | timeAgo }}
span(v-if="conversation.date") {{ conversation.date | timeAgo }}
div.messagePreview {{ conversation.lastMessageText ? removeTags(parseMarkdown(conversation.lastMessageText)) : '' }}
.col-8.messages.d-flex.flex-column.justify-content-between
.empty-messages.text-center(v-if='!selectedConversation.key')
.svg-icon.envelope(v-html="icons.messageIcon")
h4 {{placeholderTexts.title}}
p(v-html="placeholderTexts.description")
.empty-messages.text-center(v-if='selectedConversation.key && selectedConversationMessages.length === 0')
.empty-messages.text-center(v-if='selectedConversation && selectedConversationMessages.length === 0')
p {{ $t('beginningOfConversation', {userName: selectedConversation.name})}}
chat-messages.message-scroll(
v-if="selectedConversation.messages && selectedConversationMessages.length > 0",
v-if="selectedConversation && selectedConversationMessages.length > 0",
:chat='selectedConversationMessages',
:inbox='true',
@message-removed='messageRemoved',
ref="chatscroll"
ref="chatscroll",
:canLoadMore="canLoadMore",
:isLoading="messagesLoading",
@triggerLoad="infiniteScrollTrigger"
)
.pm-disabled-caption.text-center(v-if="user.inbox.optOut && selectedConversation.key")
h4 {{$t('PMDisabledCaptionTitle')}}
@@ -64,6 +68,12 @@
span.ml-3 {{ currentLength }} / 3000
</template>
<style lang="scss">
#inbox-modal .modal-body {
padding-top: 0px;
}
</style>
<style lang="scss" scoped>
@import '~client/assets/scss/colors.scss';
@import '~client/assets/scss/tiers.scss';
@@ -94,7 +104,7 @@
.sidebar {
background-color: $gray-700;
min-height: 600px;
min-height: 540px;
padding: 0;
.search-section {
@@ -107,6 +117,7 @@
position: relative;
padding-left: 0;
padding-bottom: 6em;
height: 540px;
}
.message-scroll {
@@ -225,8 +236,8 @@
import Vue from 'vue';
import moment from 'moment';
import filter from 'lodash/filter';
import sortBy from 'lodash/sortBy';
import groupBy from 'lodash/groupBy';
import orderBy from 'lodash/orderBy';
import { mapState } from 'client/libs/store';
import habiticaMarkdown from 'habitica-markdown';
import styleHelper from 'client/mixins/styleHelper';
@@ -308,8 +319,12 @@ export default {
newMessage: '',
showPopover: false,
messages: [],
messagesByConversation: {}, // cache {uuid: []}
loadedConversations: [],
loaded: false,
messagesLoading: false,
initiatedConversation: null,
updateConversionsCounter: 0,
};
},
filters: {
@@ -319,8 +334,11 @@ export default {
},
computed: {
...mapState({user: 'user.data'}),
canLoadMore () {
return this.selectedConversation && this.selectedConversation.canLoadMore;
},
conversations () {
const inboxGroup = groupBy(this.messages, 'uuid');
const inboxGroup = groupBy(this.loadedConversations, 'uuid');
// Add placeholder for new conversations
if (this.initiatedConversation && this.initiatedConversation.uuid) {
@@ -328,6 +346,7 @@ export default {
uuid: this.initiatedConversation.uuid,
user: this.initiatedConversation.user,
username: this.initiatedConversation.username,
contributor: this.initiatedConversation.contributor,
id: '',
text: '',
timestamp: new Date(),
@@ -336,62 +355,56 @@ export default {
// Create conversation objects
const convos = [];
for (let key in inboxGroup) {
const convoSorted = sortBy(inboxGroup[key], [(o) => {
return (new Date(o.timestamp)).getTime();
}]);
// Fix poor inbox chat models
const newChatModels = convoSorted.map(chat => {
let newChat = Object.assign({}, chat);
if (newChat.sent) {
newChat.toUUID = newChat.uuid;
newChat.toUser = newChat.user;
newChat.toUserName = newChat.username;
newChat.toUserContributor = newChat.contributor;
newChat.toUserBacker = newChat.backer;
newChat.uuid = this.user._id;
newChat.user = this.user.profile.name;
newChat.username = this.user.auth.local.username;
newChat.contributor = this.user.contributor;
newChat.backer = this.user.backer;
}
return newChat;
});
// In case the last message is a placeholder, remove it
const recentMessage = newChatModels[newChatModels.length - 1];
if (!recentMessage.text) newChatModels.splice(newChatModels.length - 1, 1);
const recentMessage = inboxGroup[key][0];
const convoModel = {
key: recentMessage.toUUID ? recentMessage.toUUID : recentMessage.uuid,
name: recentMessage.toUser ? recentMessage.toUser : recentMessage.user, // Handles case where from user sent the only message or the to user sent the only message
key: recentMessage.uuid,
name: recentMessage.user, // Handles case where from user sent the only message or the to user sent the only message
username: !recentMessage.text ? recentMessage.username : recentMessage.toUserName,
date: recentMessage.timestamp,
lastMessageText: recentMessage.text,
messages: newChatModels,
canLoadMore: true,
page: 0,
};
convos.push(convoModel);
}
// Sort models by most recent
const conversations = sortBy(convos, [(o) => {
return moment(o.date).toDate();
}]);
return conversations.reverse();
return convos;
},
// Separate from selectedConversation which is not coputed so messages don't update automatically
// Separate from selectedConversation which is not computed so messages don't update automatically
selectedConversationMessages () {
// Vue-subscribe to changes
const subScribeToUpdate = this.messagesLoading || this.updateConversionsCounter > -1;
const selectedConversationKey = this.selectedConversation.key;
const selectedConversation = this.conversations.find(c => c.key === selectedConversationKey);
return selectedConversation ? selectedConversation.messages : [];
const selectedConversation = this.messagesByConversation[selectedConversationKey];
this.messages = selectedConversation || [];
const ordered = orderBy(this.messages, [(m) => {
return m.timestamp;
}], ['asc']);
if (subScribeToUpdate) {
return ordered;
}
},
filtersConversations () {
if (!this.search) return this.conversations;
return filter(this.conversations, (conversation) => {
return conversation.name.toLowerCase().indexOf(this.search.toLowerCase()) !== -1;
});
// Vue-subscribe to changes
const subScribeToUpdate = this.updateConversionsCounter > -1;
const filtered = subScribeToUpdate && !this.search ?
this.conversations :
filter(this.conversations, (conversation) => {
return conversation.name.toLowerCase().indexOf(this.search.toLowerCase()) !== -1;
});
const ordered = orderBy(filtered, [(o) => {
return moment(o.date).toDate();
}], ['desc']);
return ordered;
},
currentLength () {
return this.newMessage.length;
@@ -424,25 +437,34 @@ export default {
methods: {
async onModalShown () {
this.loaded = false;
const res = await axios.get('/api/v4/inbox/messages');
this.messages = res.data.data;
const conversationRes = await axios.get('/api/v4/inbox/conversations');
this.loadedConversations = conversationRes.data.data;
this.loaded = true;
},
onModalHide () {
this.messages = [];
// reset everything
this.loadedConversations = [];
this.loaded = false;
this.initiatedConversation = null;
this.messagesByConversation = {};
this.selectedConversation = {};
},
messageRemoved (message) {
const messageIndex = this.messages.findIndex(msg => msg.id === message.id);
if (messageIndex !== -1) this.messages.splice(messageIndex, 1);
if (this.selectedConversationMessages.length === 0) this.initiatedConversation = {
uuid: this.selectedConversation.key,
user: this.selectedConversation.name,
username: this.selectedConversation.username,
backer: this.selectedConversation.backer,
contributor: this.selectedConversation.contributor,
};
const messages = this.messagesByConversation[this.selectedConversation.key];
const messageIndex = messages.findIndex(msg => msg.id === message.id);
if (messageIndex !== -1) messages.splice(messageIndex, 1);
if (this.selectedConversationMessages.length === 0) {
this.initiatedConversation = {
uuid: this.selectedConversation.key,
user: this.selectedConversation.name,
username: this.selectedConversation.username,
backer: this.selectedConversation.backer,
contributor: this.selectedConversation.contributor,
};
}
},
toggleClick () {
this.displayCreate = !this.displayCreate;
@@ -450,13 +472,17 @@ export default {
toggleOpt () {
this.$store.dispatch('user:togglePrivateMessagesOpt');
},
selectConversation (key) {
async selectConversation (key) {
let convoFound = this.conversations.find((conversation) => {
return conversation.key === key;
});
this.selectedConversation = convoFound || {};
if (!this.messagesByConversation[this.selectedConversation.key]) {
await this.loadMessages();
}
Vue.nextTick(() => {
if (!this.$refs.chatscroll) return;
let chatscroll = this.$refs.chatscroll.$el;
@@ -466,18 +492,32 @@ export default {
sendPrivateMessage () {
if (!this.newMessage) return;
this.messages.push({
const messages = this.messagesByConversation[this.selectedConversation.key];
messages.push({
sent: true,
text: this.newMessage,
timestamp: new Date(),
user: this.selectedConversation.name,
username: this.selectedConversation.username,
uuid: this.selectedConversation.key,
toUser: this.selectedConversation.name,
toUserName: this.selectedConversation.username,
toUserContributor: this.selectedConversation.contributor,
toUserBacker: this.selectedConversation.backer,
toUUID: this.selectedConversation.uuid,
id: '-1', // will be updated once the result is back
likes: {},
ownerId: this.user._id,
uuid: this.user._id,
fromUUID: this.user._id,
user: this.user.profile.name,
username: this.user.auth.local.username,
contributor: this.user.contributor,
backer: this.user.backer,
});
// Remove the placeholder message
if (this.initiatedConversation && this.initiatedConversation.uuid === this.selectedConversation.key) {
this.loadedConversations.unshift(this.initiatedConversation);
this.initiatedConversation = null;
}
@@ -495,7 +535,10 @@ export default {
message: this.newMessage,
}).then(response => {
const newMessage = response.data.data.message;
Object.assign(this.messages[this.messages.length - 1], newMessage);
const messageToReset = messages[messages.length - 1];
messageToReset.id = newMessage.id; // just set the id, all other infos already set
Object.assign(messages[messages.length - 1], messageToReset);
this.updateConversionsCounter++;
});
this.newMessage = '';
@@ -520,6 +563,36 @@ export default {
if (!text) return;
return habiticaMarkdown.render(String(text));
},
infiniteScrollTrigger () {
// show loading and wait until the loadMore debounced
// or else it would trigger on every scrolling-pixel (while not loading)
if (this.canLoadMore) {
this.messagesLoading = true;
}
return this.loadMore();
},
loadMore () {
this.selectedConversation.page += 1;
return this.loadMessages();
},
async loadMessages () {
this.messagesLoading = true;
const requestUrl = `/api/v4/inbox/paged-messages?conversation=${this.selectedConversation.key}&page=${this.selectedConversation.page}`;
const res = await axios.get(requestUrl);
const loadedMessages = res.data.data;
this.messagesByConversation[this.selectedConversation.key] = this.messagesByConversation[this.selectedConversation.key] || [];
const loadedMessagesToAdd = loadedMessages
.filter(m => this.messagesByConversation[this.selectedConversation.key].findIndex(mI => mI.id === m.id) === -1)
;
this.messagesByConversation[this.selectedConversation.key].push(...loadedMessagesToAdd);
// only show the load more Button if the max count was returned
this.selectedConversation.canLoadMore = loadedMessages.length === 10;
this.messagesLoading = false;
},
},
};
</script>
+55 -28
View File
@@ -12,22 +12,29 @@
button.btn.btn-secondary.positive-icon(v-if='user._id !== this.userLoggedIn._id && userLoggedIn.inbox.blocks.indexOf(user._id) !== -1',
@click="unblockUser()", v-b-tooltip.hover.right="$t('unblock')")
.svg-icon.positive-icon(v-html="icons.positive")
button.btn.btn-secondary.positive-icon(v-if='this.userLoggedIn.contributor.admin && !adminToolsLoaded',
@click="loadAdminTools()", v-b-tooltip.hover.right="'Admin - Load Tools'")
button.btn.btn-secondary.positive-icon(v-if='this.userLoggedIn.contributor.admin',
@click="toggleAdminTools()", v-b-tooltip.hover.right="'Admin - Toggle Tools'")
.svg-icon.positive-icon(v-html="icons.staff")
span(v-if='this.userLoggedIn.contributor.admin && adminToolsLoaded')
button.btn.btn-secondary.positive-icon(v-if='!hero.flags || (hero.flags && !hero.flags.chatRevoked)',
@click="adminRevokeChat()", v-b-tooltip.hover.bottom="'Admin - Revoke Chat Privileges'")
.svg-icon.positive-icon(v-html="icons.megaphone")
button.btn.btn-secondary.positive-icon(v-if='hero.flags && hero.flags.chatRevoked',
@click="adminReinstateChat()", v-b-tooltip.hover.bottom="'Admin - Reinstate Chat Privileges'")
.svg-icon.positive-icon(v-html="icons.challenge")
button.btn.btn-secondary.positive-icon(v-if='!hero.auth.blocked',
@click="adminBlockUser()", v-b-tooltip.hover.right="'Admin - Ban User'")
.svg-icon.positive-icon(v-html="icons.lock")
button.btn.btn-secondary.positive-icon(v-if='hero.auth.blocked',
@click="adminUnblockUser()", v-b-tooltip.hover.right="'Admin - Unblock User'")
.svg-icon.positive-icon(v-html="icons.member")
.row.admin-profile-actions(v-if='this.userLoggedIn.contributor.admin && adminToolsLoaded')
.col-12.text-right
span.admin-action(v-if='!hero.flags || (hero.flags && !hero.flags.chatShadowMuted)',
@click="adminTurnOnShadowMuting()", v-b-tooltip.hover.bottom="'Turn on Shadow Muting'")
| shadow-mute
span.admin-action(v-if='hero.flags && hero.flags.chatShadowMuted',
@click="adminTurnOffShadowMuting()", v-b-tooltip.hover.bottom="'Turn off Shadow Muting'")
| un-shadow-mute
span.admin-action(v-if='!hero.flags || (hero.flags && !hero.flags.chatRevoked)',
@click="adminRevokeChat()", v-b-tooltip.hover.bottom="'Revoke Chat Privileges'")
| mute
span.admin-action(v-if='hero.flags && hero.flags.chatRevoked',
@click="adminReinstateChat()", v-b-tooltip.hover.bottom="'Reinstate Chat Privileges'")
| un-mute
span.admin-action(v-if='!hero.auth.blocked',
@click="adminBlockUser()", v-b-tooltip.hover.bottom="'Ban User'")
| ban
span.admin-action(v-if='hero.auth.blocked',
@click="adminUnblockUser()", v-b-tooltip.hover.bottom="'Un-Ban User'")
| un-ban
.row
.col-12
member-details(:member="user")
@@ -152,11 +159,6 @@
background: #f9f9f9;
}
.gearTitle {
color: white;
margin-bottom: 20px;
}
.progress-container > .progress {
background-color: $gray-500 !important;
height: 16px !important;
@@ -189,6 +191,16 @@
width: 100%;
}
.admin-profile-actions {
margin-bottom: 3em;
.admin-action {
color: blue;
cursor: pointer;
padding: 0 1em;
}
}
.profile-actions {
float: right;
margin-right: 1em;
@@ -329,11 +341,6 @@
}
}
.gearTitle {
color: white;
margin-bottom: 20px;
}
.profile-section {
h2 {
overflow: hidden;
@@ -596,6 +603,22 @@ export default {
openSendGemsModal () {
this.$root.$emit('habitica::send-gems', this.user);
},
adminTurnOnShadowMuting () {
if (!this.hero.flags) {
this.hero.flags = {};
}
this.hero.flags.chatShadowMuted = true;
this.$store.dispatch('hall:updateHero', { heroDetails: this.hero });
},
adminTurnOffShadowMuting () {
if (!this.hero.flags) {
this.hero.flags = {};
}
this.hero.flags.chatShadowMuted = false;
this.$store.dispatch('hall:updateHero', { heroDetails: this.hero });
},
adminRevokeChat () {
if (!this.hero.flags) {
this.hero.flags = {};
@@ -622,9 +645,13 @@ export default {
this.$store.dispatch('hall:updateHero', { heroDetails: this.hero });
},
async loadAdminTools () {
this.hero = await this.$store.dispatch('hall:getHero', { uuid: this.user._id });
this.adminToolsLoaded = true;
async toggleAdminTools () {
if (this.adminToolsLoaded) {
this.adminToolsLoaded = false;
} else {
this.hero = await this.$store.dispatch('hall:getHero', { uuid: this.user._id });
this.adminToolsLoaded = true;
}
},
showAllocation () {
return this.user._id === this.userLoggedIn._id && this.hasClass;

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