Compare commits

..

726 Commits

Author SHA1 Message Date
Matteo Pagliazzi
8da36bf27c 4.140.5 2020-04-17 15:09:12 +02:00
Matteo Pagliazzi
1800fabaaa Merge pull request #129 from HabitRPG/cache-fixes-3
API Cache fixes
2020-04-17 15:08:15 +02:00
Matteo Pagliazzi
cda5c6fbb0 res.header -> res.set 2020-04-17 14:57:53 +02:00
Matteo Pagliazzi
495d01f386 fix(static files): cache more static files (#12102) 2020-04-17 14:52:28 +02:00
Matteo Pagliazzi
24e1bfdfba add basic test, disable etag on post routes as well, paypal ipn: prevent set headers after response error 2020-04-17 14:50:09 +02:00
Matteo Pagliazzi
f757e645b7 disable caching for the /status api route 2020-04-17 14:22:32 +02:00
Matteo Pagliazzi
bf492933cc fix(cache): explicitly disable caching for most api routes 2020-04-17 14:22:20 +02:00
Sabe Jones
cc7dac47c4 4.140.4 2020-04-16 15:18:00 -05:00
Sabe Jones
c8189360d6 Merge branch 'develop' into release 2020-04-16 15:17:56 -05:00
Sabe Jones
88183149c5 chore(news): Bailey 2020-04-16 15:17:14 -05:00
Matteo Pagliazzi
a8f397c674 fix(join group): do not throw if inviter has does not exist 2020-04-15 21:43:24 +02:00
Matteo Pagliazzi
c5aeab652d Push Notifications Fixes - Part 2 (#12092)
* push notifications: handle some more error codes and when the user is loaded using .lean()

* fix lint

* do not send push notification if message is missing
2020-04-15 21:36:53 +02:00
Melior
cc04761c24 Merge branch 'origin/develop' into Weblate. 2020-04-14 22:55:19 +02:00
Melior
29dccdd148 Translated using Weblate (Dutch)
Currently translated at 95.9% (666 of 694 strings)

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

Merge branch 'origin/develop' into Weblate.

Translated using Weblate (Swedish)

Currently translated at 95.0% (133 of 140 strings)

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

Translated using Weblate (German)

Currently translated at 99.7% (2086 of 2091 strings)

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

Translated using Weblate (Romanian)

Currently translated at 100.0% (298 of 298 strings)

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

Translated using Weblate (Dutch)

Currently translated at 95.3% (662 of 694 strings)

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

Translated using Weblate (German)

Currently translated at 99.8% (693 of 694 strings)

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

Translated using Weblate (German)

Currently translated at 99.8% (693 of 694 strings)

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

Translated using Weblate (Romanian)

Currently translated at 100.0% (126 of 126 strings)

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

Translated using Weblate (Romanian)

Currently translated at 100.0% (211 of 211 strings)

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

Translated using Weblate (Japanese)

Currently translated at 100.0% (67 of 67 strings)

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

Translated using Weblate (Japanese)

Currently translated at 100.0% (492 of 492 strings)

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

Translated using Weblate (Japanese)

Currently translated at 100.0% (298 of 298 strings)

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

Translated using Weblate (Romanian)

Currently translated at 100.0% (56 of 56 strings)

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

Translated using Weblate (Romanian)

Currently translated at 100.0% (211 of 211 strings)

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

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (492 of 492 strings)

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

Translated using Weblate (German)

Currently translated at 99.4% (2080 of 2091 strings)

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

Translated using Weblate (Russian)

Currently translated at 99.5% (691 of 694 strings)

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

Translated using Weblate (Japanese)

Currently translated at 90.3% (224 of 248 strings)

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

Translated using Weblate (Russian)

Currently translated at 100.0% (140 of 140 strings)

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

Translated using Weblate (Dutch)

Currently translated at 100.0% (140 of 140 strings)

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

Translated using Weblate (Romanian)

Currently translated at 100.0% (8 of 8 strings)

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

Translated using Weblate (Romanian)

Currently translated at 100.0% (67 of 67 strings)

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

Translated using Weblate (Romanian)

Currently translated at 100.0% (31 of 31 strings)

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

Translated using Weblate (Romanian)

Currently translated at 100.0% (56 of 56 strings)

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

Translated using Weblate (Romanian)

Currently translated at 100.0% (63 of 63 strings)

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

Translated using Weblate (Russian)

Currently translated at 98.7% (685 of 694 strings)

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

Translated using Weblate (Dutch)

Currently translated at 94.6% (657 of 694 strings)

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

Translated using Weblate (French)

Currently translated at 100.0% (694 of 694 strings)

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

Translated using Weblate (French)

Currently translated at 100.0% (358 of 358 strings)

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

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (694 of 694 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/pt_BR/
2020-04-14 22:55:14 +02:00
Denys Dorokhov
186b929e59 API-v4 route added: 'api/v4/faq' fixes #11801 (#11905)
* feat(api-v4): new /faq route added

* refactor(server): change of function name in libs/content.js
2020-04-14 22:14:53 +02:00
Matteo Pagliazzi
551abf292c Removed loading screen tips, fixes #11834 (#12063)
* removed loading tip div

* removed loading tip number logic

* removed loadingScreenTips.json
2020-04-14 22:03:57 +02:00
Sabe Jones
1e1c058d82 Merge branch 'release' into develop 2020-04-14 14:50:46 -05:00
Sabe Jones
2ea9070a9b 4.140.3 2020-04-14 14:50:10 -05:00
Sabe Jones
168a3a6e89 Merge branch 'sabrecat/potion-time' into release 2020-04-14 14:49:18 -05:00
Sabe Jones
67bd2d9130 feat(content): enable spring avatar customizations 2020-04-14 14:49:11 -05:00
Matteo Pagliazzi
cb0280ca8b fix(lint): move old migration to archive 2020-04-14 19:15:29 +02:00
Matteo Pagliazzi
259b15877b chore(deps): remove unused aws-sdk file and dependency 2020-04-14 17:03:42 +02:00
Matteo Pagliazzi
dd31f559c7 onboarding guide improvements (#12068) 2020-04-13 16:19:46 +02:00
dependabot-preview[bot]
6c29ea8c4c build(deps): bump @vue/cli-plugin-unit-mocha in /website/client (#12081)
Bumps [@vue/cli-plugin-unit-mocha](https://github.com/vuejs/vue-cli/tree/HEAD/packages/@vue/cli-plugin-unit-mocha) from 4.3.0 to 4.3.1.
- [Release notes](https://github.com/vuejs/vue-cli/releases)
- [Changelog](https://github.com/vuejs/vue-cli/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/vuejs/vue-cli/commits/v4.3.1/packages/@vue/cli-plugin-unit-mocha)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-04-13 14:53:29 +02:00
dependabot-preview[bot]
dc316ad1c8 build(deps): bump @vue/cli-plugin-eslint in /website/client (#12076)
Bumps [@vue/cli-plugin-eslint](https://github.com/vuejs/vue-cli/tree/HEAD/packages/@vue/cli-plugin-eslint) from 4.3.0 to 4.3.1.
- [Release notes](https://github.com/vuejs/vue-cli/releases)
- [Changelog](https://github.com/vuejs/vue-cli/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/vuejs/vue-cli/commits/v4.3.1/packages/@vue/cli-plugin-eslint)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-04-13 13:35:39 +02:00
dependabot-preview[bot]
a5b37fcc02 build(deps): bump @vue/cli-service in /website/client (#12080)
Bumps [@vue/cli-service](https://github.com/vuejs/vue-cli/tree/HEAD/packages/@vue/cli-service) from 4.3.0 to 4.3.1.
- [Release notes](https://github.com/vuejs/vue-cli/releases)
- [Changelog](https://github.com/vuejs/vue-cli/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/vuejs/vue-cli/commits/v4.3.1/packages/@vue/cli-service)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-04-13 13:31:25 +02:00
Matteo Pagliazzi
16f1c7286b Merge pull request #12084 from HabitRPG/dependabot/npm_and_yarn/website/client/vue/cli-plugin-router-4.3.1
build(deps): bump @vue/cli-plugin-router from 4.3.0 to 4.3.1 in /website/client
2020-04-13 13:28:15 +02:00
Matteo Pagliazzi
d5b3e4ec9f Merge pull request #12075 from HabitRPG/dependabot/npm_and_yarn/website/client/bootstrap-vue-2.11.0
build(deps): bump bootstrap-vue from 2.10.1 to 2.11.0 in /website/client
2020-04-13 13:27:53 +02:00
Matteo Pagliazzi
47eb9bf3ff Merge pull request #12073 from HabitRPG/dependabot/npm_and_yarn/website/client/vue/cli-plugin-babel-4.3.1
build(deps): bump @vue/cli-plugin-babel from 4.3.0 to 4.3.1 in /website/client
2020-04-13 13:27:31 +02:00
Matteo Pagliazzi
2977346ccb Merge pull request #12074 from HabitRPG/dependabot/npm_and_yarn/website/client/amplitude-js-5.11.0
build(deps): bump amplitude-js from 5.10.0 to 5.11.0 in /website/client
2020-04-13 13:27:23 +02:00
Matteo Pagliazzi
a545cc72d0 Merge pull request #12077 from HabitRPG/dependabot/npm_and_yarn/website/client/core-js-3.6.5
build(deps): bump core-js from 3.6.4 to 3.6.5 in /website/client
2020-04-13 13:27:08 +02:00
Matteo Pagliazzi
82548f69e5 Merge pull request #12078 from HabitRPG/dependabot/npm_and_yarn/website/client/jquery-3.5.0
build(deps): bump jquery from 3.4.1 to 3.5.0 in /website/client
2020-04-13 13:27:02 +02:00
Matteo Pagliazzi
5aacae3ead build(deps): bump aws-sdk from 2.653.0 to 2.656.0 (#12082)
Bumps [aws-sdk](https://github.com/aws/aws-sdk-js) from 2.653.0 to 2.656.0.
- [Release notes](https://github.com/aws/aws-sdk-js/releases)
- [Changelog](https://github.com/aws/aws-sdk-js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-js/compare/v2.653.0...v2.656.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-04-13 13:25:56 +02:00
dependabot-preview[bot]
9f8162b82c build(deps): bump @babel/preset-env from 7.9.0 to 7.9.5 (#12087)
Bumps [@babel/preset-env](https://github.com/babel/babel) from 7.9.0 to 7.9.5.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.9.0...v7.9.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-04-13 13:25:39 +02:00
dependabot-preview[bot]
98a749b239 build(deps): bump @vue/cli-plugin-router in /website/client
Bumps [@vue/cli-plugin-router](https://github.com/vuejs/vue-cli/tree/HEAD/packages/@vue/cli-plugin-router) from 4.3.0 to 4.3.1.
- [Release notes](https://github.com/vuejs/vue-cli/releases)
- [Changelog](https://github.com/vuejs/vue-cli/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/vuejs/vue-cli/commits/v4.3.1/packages/@vue/cli-plugin-router)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-13 05:30:11 +00:00
dependabot-preview[bot]
0cef9eff87 build(deps): bump aws-sdk from 2.653.0 to 2.656.0
Bumps [aws-sdk](https://github.com/aws/aws-sdk-js) from 2.653.0 to 2.656.0.
- [Release notes](https://github.com/aws/aws-sdk-js/releases)
- [Changelog](https://github.com/aws/aws-sdk-js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-js/compare/v2.653.0...v2.656.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-13 05:29:33 +00:00
dependabot-preview[bot]
3189a944d7 build(deps): bump jquery from 3.4.1 to 3.5.0 in /website/client
Bumps [jquery](https://github.com/jquery/jquery) from 3.4.1 to 3.5.0.
- [Release notes](https://github.com/jquery/jquery/releases)
- [Commits](https://github.com/jquery/jquery/compare/3.4.1...3.5.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-13 05:26:48 +00:00
dependabot-preview[bot]
79066165e2 build(deps): bump core-js from 3.6.4 to 3.6.5 in /website/client
Bumps [core-js](https://github.com/zloirock/core-js) from 3.6.4 to 3.6.5.
- [Release notes](https://github.com/zloirock/core-js/releases)
- [Changelog](https://github.com/zloirock/core-js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/zloirock/core-js/compare/v3.6.4...v3.6.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-13 05:25:49 +00:00
dependabot-preview[bot]
c6f6df3f14 build(deps): bump bootstrap-vue from 2.10.1 to 2.11.0 in /website/client
Bumps [bootstrap-vue](https://github.com/bootstrap-vue/bootstrap-vue) from 2.10.1 to 2.11.0.
- [Release notes](https://github.com/bootstrap-vue/bootstrap-vue/releases)
- [Changelog](https://github.com/bootstrap-vue/bootstrap-vue/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/bootstrap-vue/bootstrap-vue/compare/v2.10.1...v2.11.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-13 05:23:51 +00:00
dependabot-preview[bot]
7bfd6ceca1 build(deps): bump amplitude-js from 5.10.0 to 5.11.0 in /website/client
Bumps [amplitude-js](https://github.com/amplitude/amplitude-javascript) from 5.10.0 to 5.11.0.
- [Release notes](https://github.com/amplitude/amplitude-javascript/releases)
- [Changelog](https://github.com/amplitude/Amplitude-JavaScript/blob/master/CHANGELOG.md)
- [Commits](https://github.com/amplitude/amplitude-javascript/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-13 05:22:44 +00:00
dependabot-preview[bot]
400f4dfb01 build(deps): bump @vue/cli-plugin-babel in /website/client
Bumps [@vue/cli-plugin-babel](https://github.com/vuejs/vue-cli/tree/HEAD/packages/@vue/cli-plugin-babel) from 4.3.0 to 4.3.1.
- [Release notes](https://github.com/vuejs/vue-cli/releases)
- [Changelog](https://github.com/vuejs/vue-cli/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/vuejs/vue-cli/commits/v4.3.1/packages/@vue/cli-plugin-babel)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-13 05:21:52 +00:00
Alys
57a9fb5241 add comment to contributor.critical flag in user model 2020-04-13 15:15:26 +10:00
Sabe Jones
08c63f94fc fix(shops): improve featured potion and quest 2020-04-10 16:17:15 -05:00
Sabe Jones
9c6c90a2e9 fix(potions): call out limited time 2020-04-10 15:15:23 -05:00
Sabe Jones
39765895ee fix(quest): call out limited time 2020-04-10 13:53:52 -05:00
Matteo Pagliazzi
2a8fc7aea2 Push Notifications Improvements (#12019)
* start fixing push notitifications

* push notifications: refactor error handling

* remove comment and improve logging

* improve emails errors

* wip: start improving webhooks tests

* add max length to push notifications and tests

* fix typos
2020-04-10 16:41:44 +02:00
Melior
0a86d04a15 Merge branch 'origin/develop' into Weblate. 2020-04-09 13:32:31 +02:00
Melior
3afa7e6da5 Translated using Weblate (Romanian)
Currently translated at 100.0% (248 of 248 strings)

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

Translated using Weblate (Romanian)

Currently translated at 100.0% (140 of 140 strings)

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

Translated using Weblate (Romanian)

Currently translated at 100.0% (143 of 143 strings)

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

Translated using Weblate (Romanian)

Currently translated at 100.0% (172 of 172 strings)

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

Translated using Weblate (Romanian)

Currently translated at 100.0% (8 of 8 strings)

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

Translated using Weblate (Romanian)

Currently translated at 100.0% (67 of 67 strings)

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

Translated using Weblate (Romanian)

Currently translated at 100.0% (31 of 31 strings)

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

Translated using Weblate (Romanian)

Currently translated at 100.0% (180 of 180 strings)

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

Translated using Weblate (Romanian)

Currently translated at 100.0% (492 of 492 strings)

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

Translated using Weblate (Romanian)

Currently translated at 100.0% (2091 of 2091 strings)

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

Translated using Weblate (Romanian)

Currently translated at 100.0% (298 of 298 strings)

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

Translated using Weblate (Romanian)

Currently translated at 100.0% (328 of 328 strings)

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

Translated using Weblate (Romanian)

Currently translated at 100.0% (56 of 56 strings)

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

Translated using Weblate (Romanian)

Currently translated at 100.0% (63 of 63 strings)

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

Translated using Weblate (Romanian)

Currently translated at 100.0% (694 of 694 strings)

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

Translated using Weblate (Romanian)

Currently translated at 100.0% (126 of 126 strings)

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

Translated using Weblate (Romanian)

Currently translated at 100.0% (358 of 358 strings)

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

Translated using Weblate (Romanian)

Currently translated at 100.0% (522 of 522 strings)

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

Translated using Weblate (Romanian)

Currently translated at 100.0% (77 of 77 strings)

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

Translated using Weblate (Romanian)

Currently translated at 100.0% (211 of 211 strings)

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

Translated using Weblate (Japanese)

Currently translated at 100.0% (211 of 211 strings)

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

Translated using Weblate (Romanian)

Currently translated at 87.5% (7 of 8 strings)

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

Translated using Weblate (Romanian)

Currently translated at 100.0% (57 of 57 strings)

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

Translated using Weblate (Romanian)

Currently translated at 93.7% (134 of 143 strings)

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

Translated using Weblate (Romanian)

Currently translated at 87.5% (7 of 8 strings)

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

Translated using Weblate (Romanian)

Currently translated at 100.0% (6 of 6 strings)

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

Translated using Weblate (Romanian)

Currently translated at 83.5% (1747 of 2091 strings)

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

Translated using Weblate (Romanian)

Currently translated at 41.2% (26 of 63 strings)

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

Translated using Weblate (Romanian)

Currently translated at 100.0% (28 of 28 strings)

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

Translated using Weblate (Romanian)

Currently translated at 96.7% (30 of 31 strings)

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

Translated using Weblate (Romanian)

Currently translated at 98.7% (324 of 328 strings)

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

Translated using Weblate (Romanian)

Currently translated at 96.0% (121 of 126 strings)

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

Translated using Weblate (Romanian)

Currently translated at 100.0% (230 of 230 strings)

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

Translated using Weblate (Romanian)

Currently translated at 11.6% (9 of 77 strings)

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

Translated using Weblate (Dutch)

Currently translated at 97.8% (137 of 140 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (694 of 694 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (694 of 694 strings)

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

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (694 of 694 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (358 of 358 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% (358 of 358 strings)

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

Translated using Weblate (Dutch)

Currently translated at 100.0% (358 of 358 strings)

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

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (230 of 230 strings)

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

Translated using Weblate (Portuguese (Brazil))

Currently translated at 98.8% (686 of 694 strings)

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

Translated using Weblate (English (United Kingdom))

Currently translated at 99.4% (690 of 694 strings)

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

Translated using Weblate (German)

Currently translated at 99.1% (688 of 694 strings)

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

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (358 of 358 strings)

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

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (358 of 358 strings)

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

Translated using Weblate (German)

Currently translated at 100.0% (358 of 358 strings)

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

Translated using Weblate (German)

Currently translated at 100.0% (522 of 522 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/de/
2020-04-09 13:32:17 +02:00
Sabe Jones
0ac0723be5 4.140.2 2020-04-09 06:28:11 -05:00
Sabe Jones
0f2d2ddad6 Merge branch 'develop' into release 2020-04-09 06:28:06 -05:00
Matteo Pagliazzi
e19837f58e 4.140.1 2020-04-08 23:31:26 +02:00
Matteo Pagliazzi
0ea1ce9758 fix(logs): do not log mongoose object with id and no _id to avoid crashes, see https://github.com/davidmarkclements/fast-safe-stringify/issues/43 2020-04-08 23:31:17 +02:00
Phillip Thelen
9d16ab7dba Sign in with Apple (#11793)
* add date check

* achievements modal polishing

* refresh private-messages page when you are already on it

* add countbadge knob to change the example

* fix lint

* typos

* typos

* typos

* add toggle for achievements categories

* typo

* fix test

* fix edit avatar modal cannot be closed

* WIP(settings): subscriber page improvements

* WIP(subscriptions): more design build-out

* fix(css): disabled button styles

* fix(css): better Amazon targeting

* fix hide tooltip + align header correctly

* disable perfect scroll

* load messages on refresh event

* fix header label + conversation actions not breaking layout on hover

* WIP(g1g1): notif

* WIP(g1g1): notif cont'd

* fix(test): snowball change

* fix(event): feature NYE card

* chore(sprites): compile

* fix(bgs): include TT required field

* add gifting banner to the max height calculation

* chore(event): enable winter customizations

* WIP(gifting): partial modal implementation

* feat(gifting): select giftee modal

* fix(gifting): notification order, modal dismiss

* Begin implementing sign in with apple

# Conflicts:
#	package-lock.json
#	website/common/script/constants.js
#	website/server/libs/auth/social.js
#	website/server/models/user/schema.js

* Add apple sign in button to website

* fix lint errors

* fix config json

* fix(modals): correct some repops

* fix(gifting): style updates

* fix(buy): modal style changes

* fix(modals): also clean out "prev"

* Attempt workaround for sign in with apple on android

* temporarily log everything as error

* refactor(modals): hide in dismiss event

* fix temporary test failure

* changes to sign in with apple

* fix: first batch of layout issues for private messages + auto sizing textarea

* fix(modals): new dismiss logic

* fix(modals): new dismiss no go??

* Only use email scope

* print debugging

* .

* ..

* ...

* username second line - open profile on face-avatar/conversation name - fix textarea height

* temporarily disable apple auth and just return data for debugging

* Hopefully this works

* .....

* WIP(subscription): unsubscribed state

* .

* ..

* MAYBE THIS ACTUALLY WORKS???

* Implement apple sign in

* fix some urls

* fix urls

* fix redirect and auth

* attempt to also request name

* fix lint error

* WIP(subscription): partial subscribed

* chore(sprites): compile

* Change approach so that it actually works

* fix config error

* fix lint errors

* Fix

* fix lint error

* lint error

* WIP(subscription): finish subscribed

* refresh on sync

* new "you dont have any messages" style + changed min textarea height

* new conversationItem style / layout

* reset message unread on reload

* chore(npm): update package-locks

* fix styles / textarea height

* feat(subscription): revised sub page RC

* list optOut / chatRevoked informations for each conversation + show why its disabled

* Improve apple redirect view

* Fix apple icon on group task registration page

* WIP(adventure): prereqs

* Block / Unblock - correct disabled states - $gray-200 instead of 300/400

* canReceive not checking chatRevoked

* fix: faceAvatar / userLink open the selected conversation user

* check if the target user is blocking the logged-in user

* fix(subs): style tweaks

* fix(profiles): short circuit contributor
Attempted fix for #11830

* chore(sprites): compile

* fix(content): missing potion data

* fix(content): missing string

* WIP(drops): new modal

* fix(subs): moar style tweaks

* check if blocks is undefined

* max-height instead of height

* fix "no messages" state + canReceive on a new conversation

* WIP(adventure): analytics fixes etc

* Improve apple signin handling

* fixed conversations width (280px on max 768 width page)

* feat(adventure): random egg+potion on 2nd task

* fix(lint): noworkies

* fix(modal): correctly construct classes

* fix(tests): expectations and escape

* Fix typo

* use base url from env variables

* fix lint

* call autosize after message is sent

* fix urls

* always verify token

* throw error when social auth could not retrieve id

* Store emails correctly for apple auth

* Retrieve name when authenticating through apple

* Fix lint errors

* fix all lint errors

* fix(content): missing strings

* Revert "always verify token"

This reverts commit 8ac40c76bf.

# Conflicts:
#	website/server/libs/auth/social.js

* Correctly load name

* remove extra changes

* remove extra logger call

* reset package and package-lock

* add back missing packages

* use name from apple

* add support for multiple apple public keys

* add some unit and integration tests

* add apple auth integration test

* tweak social signup buttons

* pixel pushing

Co-authored-by: Matteo Pagliazzi <matteopagliazzi@gmail.com>
Co-authored-by: Sabe Jones <sabrecat@gmail.com>
Co-authored-by: negue <eugen.bolz@gmail.com>
Co-authored-by: Phillip Thelen <phillip@habitica.com>
2020-04-08 18:44:30 +02:00
Anoop Ravella
776e9834f3 removed loadingScreenTips.json 2020-04-08 11:18:18 -04:00
Melior
1d98929453 Merge branch 'origin/develop' into Weblate.
Merge branch 'origin/develop' into Weblate.

Translated using Weblate (Dutch)

Currently translated at 100.0% (248 of 248 strings)

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

Translated using Weblate (Dutch)

Currently translated at 100.0% (522 of 522 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (2091 of 2091 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (2091 of 2091 strings)

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

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (2091 of 2091 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% (2091 of 2091 strings)

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

Translated using Weblate (French)

Currently translated at 100.0% (2091 of 2091 strings)

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

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (2091 of 2091 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (522 of 522 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (522 of 522 strings)

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

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (522 of 522 strings)

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

Translated using Weblate (French)

Currently translated at 100.0% (522 of 522 strings)

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

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (522 of 522 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/en_GB/
2020-04-08 00:18:20 +02:00
Matteo Pagliazzi
80664b6c5f Merge pull request #12016 from inftp/ptsFix
stop 'pts' from overflowing to next line
2020-04-07 22:22:12 +02:00
Matteo Pagliazzi
01123367b1 Merge pull request #12045 from JohnJSal/patch-1
Removed an unnecessary word in quest completion text
2020-04-07 22:20:10 +02:00
Sabe Jones
f6a80d18b6 Merge branch 'release' into develop 2020-04-07 14:08:41 -05:00
Sabe Jones
71af306f02 4.140.0 2020-04-07 14:08:17 -05:00
Sabe Jones
5ccd2ae262 chore(event): seeds and sprites 2020-04-07 14:08:09 -05:00
Sabe Jones
a1a1fd939d Merge branch 'sabrecat/dessert-potions' into release 2020-04-07 13:59:36 -05:00
Matteo Pagliazzi
9ac7840940 chore(winston-loggly-bulk): upgrade 2020-04-07 15:18:52 +02:00
Anoop Ravella
100275f460 removed loading tip number logic 2020-04-06 17:20:40 -04:00
Anoop Ravella
489b9c4019 removed loading tip div 2020-04-06 17:05:25 -04:00
Sabe Jones
ba61da4acb fix(stable): wacky sorting 2020-04-06 15:26:43 -05:00
Sabe Jones
903851f1fd fix(content): missing premium potion notes 2020-04-06 14:40:09 -05:00
Sabe Jones
371a1542e7 fix(content): feature items 2020-04-06 13:08:29 -05:00
Sabe Jones
0c640f07d1 fix(waffle): missing scroll 2020-04-06 12:19:40 -05:00
Melior
cbc6e7aa0c Merge branch 'origin/develop' into Weblate. 2020-04-06 17:48:06 +02:00
Sabe Jones
b6eab67e6a Merge branch 'release' into develop 2020-04-06 10:42:45 -05:00
Sabe Jones
99afefe953 4.139.0 2020-04-06 10:41:54 -05:00
Sabe Jones
9fea01b1f4 Merge branch 'sabrecat/armoire-202004' into release 2020-04-06 10:41:40 -05:00
Sabe Jones
978b78e57a feat(migration): script for adding all gear to a user 2020-04-06 14:29:29 +00:00
Melior
f920a441a5 Translated using Weblate (Romanian)
Currently translated at 98.6% (227 of 230 strings)

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

Translated using Weblate (Romanian)

Currently translated at 100.0% (36 of 36 strings)

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

Translated using Weblate (Romanian)

Currently translated at 100.0% (211 of 211 strings)

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

Translated using Weblate (Dutch)

Currently translated at 99.5% (247 of 248 strings)

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

Translated using Weblate (Romanian)

Currently translated at 100.0% (57 of 57 strings)

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

Translated using Weblate (Dutch)

Currently translated at 100.0% (28 of 28 strings)

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

Translated using Weblate (Dutch)

Currently translated at 100.0% (143 of 143 strings)

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

Translated using Weblate (Dutch)

Currently translated at 100.0% (8 of 8 strings)

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

Translated using Weblate (Romanian)

Currently translated at 100.0% (12 of 12 strings)

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

Translated using Weblate (Romanian)

Currently translated at 100.0% (27 of 27 strings)

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

Translated using Weblate (Romanian)

Currently translated at 98.7% (324 of 328 strings)

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

Translated using Weblate (Romanian)

Currently translated at 100.0% (15 of 15 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (485 of 485 strings)

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

Translated using Weblate (Russian)

Currently translated at 99.3% (142 of 143 strings)

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

Translated using Weblate (Russian)

Currently translated at 96.1% (173 of 180 strings)

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

Translated using Weblate (Russian)

Currently translated at 97.9% (2042 of 2085 strings)

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

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (2085 of 2085 strings)

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

Translated using Weblate (Russian)

Currently translated at 98.6% (508 of 515 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (2085 of 2085 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% (685 of 685 strings)

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

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (143 of 143 strings)

Translation: Habitica/Pets
Translate-URL: https://translate.habitica.com/projects/habitica/pets/pt_BR/
2020-04-06 13:53:15 +02:00
Matteo Pagliazzi
12a9eec540 build(deps): bump @vue/cli-plugin-eslint in /website/client (#12054)
Bumps [@vue/cli-plugin-eslint](https://github.com/vuejs/vue-cli/tree/HEAD/packages/@vue/cli-plugin-eslint) from 4.2.3 to 4.3.0.
- [Release notes](https://github.com/vuejs/vue-cli/releases)
- [Changelog](https://github.com/vuejs/vue-cli/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/vuejs/vue-cli/commits/v4.3.0/packages/@vue/cli-plugin-eslint)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-04-06 11:34:51 +02:00
dependabot-preview[bot]
f83d86b7f3 build(deps): bump @vue/cli-plugin-unit-mocha in /website/client (#12058)
Bumps [@vue/cli-plugin-unit-mocha](https://github.com/vuejs/vue-cli/tree/HEAD/packages/@vue/cli-plugin-unit-mocha) from 4.2.3 to 4.3.0.
- [Release notes](https://github.com/vuejs/vue-cli/releases)
- [Changelog](https://github.com/vuejs/vue-cli/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/vuejs/vue-cli/commits/v4.3.0/packages/@vue/cli-plugin-unit-mocha)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-04-06 11:34:41 +02:00
dependabot-preview[bot]
0410c97001 build(deps): bump @vue/cli-plugin-eslint in /website/client
Bumps [@vue/cli-plugin-eslint](https://github.com/vuejs/vue-cli/tree/HEAD/packages/@vue/cli-plugin-eslint) from 4.2.3 to 4.3.0.
- [Release notes](https://github.com/vuejs/vue-cli/releases)
- [Changelog](https://github.com/vuejs/vue-cli/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/vuejs/vue-cli/commits/v4.3.0/packages/@vue/cli-plugin-eslint)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-06 09:33:11 +00:00
dependabot-preview[bot]
4482b734a5 build(deps): bump @vue/cli-plugin-router in /website/client (#12056)
Bumps [@vue/cli-plugin-router](https://github.com/vuejs/vue-cli/tree/HEAD/packages/@vue/cli-plugin-router) from 4.2.3 to 4.3.0.
- [Release notes](https://github.com/vuejs/vue-cli/releases)
- [Changelog](https://github.com/vuejs/vue-cli/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/vuejs/vue-cli/commits/v4.3.0/packages/@vue/cli-plugin-router)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-04-06 11:30:38 +02:00
dependabot-preview[bot]
0131cc07bf build(deps): bump @vue/cli-service in /website/client (#12051)
Bumps [@vue/cli-service](https://github.com/vuejs/vue-cli/tree/HEAD/packages/@vue/cli-service) from 4.2.3 to 4.3.0.
- [Release notes](https://github.com/vuejs/vue-cli/releases)
- [Changelog](https://github.com/vuejs/vue-cli/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/vuejs/vue-cli/commits/v4.3.0/packages/@vue/cli-service)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-04-06 11:30:26 +02:00
dependabot-preview[bot]
70a9f66dcd build(deps): bump @vue/cli-plugin-babel in /website/client (#12049)
Bumps [@vue/cli-plugin-babel](https://github.com/vuejs/vue-cli/tree/HEAD/packages/@vue/cli-plugin-babel) from 4.2.3 to 4.3.0.
- [Release notes](https://github.com/vuejs/vue-cli/releases)
- [Changelog](https://github.com/vuejs/vue-cli/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/vuejs/vue-cli/commits/v4.3.0/packages/@vue/cli-plugin-babel)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-04-06 11:30:10 +02:00
dependabot-preview[bot]
3057fdbd4a build(deps): bump @storybook/addon-links in /website/client (#12047)
Bumps [@storybook/addon-links](https://github.com/storybookjs/storybook/tree/HEAD/addons/links) from 5.3.17 to 5.3.18.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v5.3.18/addons/links)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-04-06 11:01:56 +02:00
Matteo Pagliazzi
cc48479c66 Merge branch 'release' into develop 2020-04-06 11:01:29 +02:00
Matteo Pagliazzi
8ad644ec3a remove comment and improve logging 2020-04-06 10:57:36 +02:00
Matteo Pagliazzi
6f2bf5659d improve emails errors 2020-04-06 10:56:39 +02:00
dependabot-preview[bot]
f4e573f684 build(deps): bump bootstrap-vue from 2.9.0 to 2.10.1 in /website/client (#12050)
Bumps [bootstrap-vue](https://github.com/bootstrap-vue/bootstrap-vue) from 2.9.0 to 2.10.1.
- [Release notes](https://github.com/bootstrap-vue/bootstrap-vue/releases)
- [Changelog](https://github.com/bootstrap-vue/bootstrap-vue/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/bootstrap-vue/bootstrap-vue/compare/v2.9.0...v2.10.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-04-06 10:53:56 +02:00
dependabot-preview[bot]
a2e59d0920 build(deps): bump @storybook/addon-knobs in /website/client (#12048)
Bumps [@storybook/addon-knobs](https://github.com/storybookjs/storybook/tree/HEAD/addons/knobs) from 5.3.17 to 5.3.18.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v5.3.18/addons/knobs)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-04-06 10:53:48 +02:00
dependabot-preview[bot]
39fe86c688 build(deps): bump @storybook/addon-notes in /website/client (#12046)
Bumps [@storybook/addon-notes](https://github.com/storybookjs/storybook/tree/HEAD/addons/notes) from 5.3.17 to 5.3.18.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/v5.3.18/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v5.3.18/addons/notes)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-04-06 10:53:38 +02:00
dependabot-preview[bot]
78ceb427a3 build(deps): bump @storybook/addon-actions in /website/client (#12052)
Bumps [@storybook/addon-actions](https://github.com/storybookjs/storybook/tree/HEAD/addons/actions) from 5.3.17 to 5.3.18.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v5.3.18/addons/actions)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-04-06 10:50:15 +02:00
dependabot-preview[bot]
7c17a32bbb build(deps): bump @storybook/vue in /website/client (#12057)
Bumps [@storybook/vue](https://github.com/storybookjs/storybook/tree/HEAD/app/vue) from 5.3.17 to 5.3.18.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v5.3.18/app/vue)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-04-06 10:49:52 +02:00
dependabot-preview[bot]
9a34c16fa2 build(deps): bump aws-sdk from 2.648.0 to 2.653.0 (#12061)
Bumps [aws-sdk](https://github.com/aws/aws-sdk-js) from 2.648.0 to 2.653.0.
- [Release notes](https://github.com/aws/aws-sdk-js/releases)
- [Changelog](https://github.com/aws/aws-sdk-js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-js/compare/v2.648.0...v2.653.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-04-06 10:48:57 +02:00
dependabot-preview[bot]
38c24763fa build(deps): bump mongoose from 5.9.6 to 5.9.7 (#12062)
Bumps [mongoose](https://github.com/Automattic/mongoose) from 5.9.6 to 5.9.7.
- [Release notes](https://github.com/Automattic/mongoose/releases)
- [Changelog](https://github.com/Automattic/mongoose/blob/master/History.md)
- [Commits](https://github.com/Automattic/mongoose/compare/5.9.6...5.9.7)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-04-06 10:48:17 +02:00
JohnJSal
776f3d288b Removed an unnecessary word in quest completion text
Changed "Great job catching the that would-be arsonist..." to "Great job catching that would-be arsonist..." in the quest completion text for "Bye, Bye, Butterfry."
2020-04-05 12:09:17 -05:00
Matteo Pagliazzi
e4661c3763 Merge branch 'release' into develop 2020-04-04 13:49:59 +02:00
Matteo Pagliazzi
5fcf3fba88 4.138.6 2020-04-04 13:47:14 +02:00
inftp
156d15c540 Merge remote-tracking branch 'upstream/develop' into ptsFix 2020-04-04 16:29:34 +11:00
inftp
7d9b8a5ceb use bootstrap native style rather than custom 2020-04-04 16:28:10 +11:00
Sabe Jones
23b19853b4 fix(image): filename 2020-04-03 20:36:31 -05:00
Sabe Jones
c6839c4478 fix(content): stray comma 2020-04-03 19:31:58 -05:00
Sabe Jones
167f4f07b8 feat(content): Confection Pets 2020-04-03 19:25:43 -05:00
Matteo Pagliazzi
95c9dbaa73 Merge branch 'release' into develop 2020-04-04 00:19:17 +02:00
Matteo Pagliazzi
c88af182c9 chore(deps): upgrade slack to v4 2020-04-04 00:19:00 +02:00
Matteo Pagliazzi
d9f7772453 chore(deps): upgrade slack to v4 2020-04-04 00:03:28 +02:00
Sabe Jones
931d8814b6 chore(sprites): compile 2020-04-03 15:41:49 -05:00
Sabe Jones
25e5183370 feat(content): Armoire/BGs 2020-04 2020-04-03 15:41:35 -05:00
Matteo Pagliazzi
8e559da200 fix(dockerfile): expose EMAILS_COMMUNITY_MANAGER_EMAIL to client 2020-04-03 12:39:08 +02:00
Melior
8efed37241 Merge branch 'origin/develop' into Weblate. 2020-04-02 23:19:42 +02:00
Sabe Jones
ed25afb0b1 4.138.5 2020-04-02 16:10:21 -05:00
Sabe Jones
a2c91aae70 chore(news): Challenge and Blog Bailey 2020-04-02 16:09:36 -05:00
Sabe Jones
3ac69d5e75 Merge branch 'develop' into release 2020-04-02 15:09:54 -05:00
Sabe Jones
87b26c4cfb chore(event): end Foolishness 2020-04-02 15:09:30 -05:00
Matteo Pagliazzi
28bc843779 Misc Webhooks Fixes (#12038)
* fix(webhooks): don t parse response as json

* upgrade got to version 10

* remove old header

* fix tests

* fix email auth

* add migration

* update email error

* split migration in two
2020-04-02 21:48:47 +02:00
Matteo Pagliazzi
e92ff9737a Automatically Logout Banned Users (#12037)
* wip

* logout banned users, fix and refactor language library and middleware

* req.locals -> res.locals

* fix tests

* redirect to login page
2020-04-02 21:46:01 +02:00
Melior
66422d4235 Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (248 of 248 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (143 of 143 strings)

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

Translated using Weblate (Dutch)

Currently translated at 100.0% (172 of 172 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (2085 of 2085 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (2085 of 2085 strings)

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

Translated using Weblate (Dutch)

Currently translated at 98.8% (170 of 172 strings)

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

Translated using Weblate (Dutch)

Currently translated at 100.0% (4 of 4 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (143 of 143 strings)

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

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (143 of 143 strings)

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

Translated using Weblate (French)

Currently translated at 100.0% (248 of 248 strings)

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

Translated using Weblate (French)

Currently translated at 100.0% (143 of 143 strings)

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

Translated using Weblate (German)

Currently translated at 100.0% (143 of 143 strings)

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

Translated using Weblate (French)

Currently translated at 100.0% (2085 of 2085 strings)

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

Translated using Weblate (German)

Currently translated at 99.4% (2074 of 2085 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/de/
2020-04-02 13:30:18 +02:00
Sabe Jones
c3343c9412 fix(news): Challenge link 2020-04-01 10:23:07 -05:00
Melior
e9100c7132 Merge branch 'origin/develop' into Weblate. 2020-04-01 14:37:50 +02:00
Sabe Jones
11235685ca fix(avatar): adjust expected padding for always-on pets 2020-04-01 06:51:14 -05:00
Sabe Jones
49d6691f7d fix(avatar): adjust expected padding for always-on pets 2020-04-01 06:51:02 -05:00
Melior
db4c4e6493 Merge branch 'origin/develop' into Weblate. 2020-04-01 13:37:37 +02:00
Sabe Jones
56b1f6371f Merge branch 'release' into develop 2020-04-01 06:32:15 -05:00
Sabe Jones
1b5bd8e1ab 4.138.4 2020-04-01 06:31:49 -05:00
Sabe Jones
e39eafd3f0 feat(event): April Foolin 2020-04-01 06:31:39 -05:00
Melior
9213181ca2 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (248 of 248 strings)

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

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (248 of 248 strings)

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

Translated using Weblate (German)

Currently translated at 100.0% (248 of 248 strings)

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

Translated using Weblate (German)

Currently translated at 100.0% (180 of 180 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 99.9% (2083 of 2085 strings)

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

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (2085 of 2085 strings)

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

Translated using Weblate (German)

Currently translated at 100.0% (357 of 357 strings)

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

Translated using Weblate (German)

Currently translated at 100.0% (77 of 77 strings)

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

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (248 of 248 strings)

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

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (2085 of 2085 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/pt_BR/
2020-04-01 00:41:29 +02:00
Calvin
3e50469ed5 Switched to Click to Hatch (#11989) 2020-03-31 17:20:51 +02:00
Matheus Bernardes
7e9d3062f3 fix(achievements modal): fixes hide achievements button formatting (#12013) 2020-03-31 16:11:37 +02:00
Melior
6376e57614 Merge branch 'origin/develop' into Weblate. 2020-03-30 23:19:42 +02:00
Sabe Jones
84ad270436 Merge branch 'release' into develop 2020-03-30 16:14:17 -05:00
Sabe Jones
92cf506bad 4.138.3 2020-03-30 16:12:20 -05:00
Sabe Jones
5f97cb31b8 chore(sprites): compile 2020-03-30 16:12:11 -05:00
Sabe Jones
6d26fbc5f2 feat(content): April subscriber items 2020-03-30 16:12:03 -05:00
Sabe Jones
bb9912de89 fix(analytics): problems 2020-03-30 15:38:41 -05:00
Sabe Jones
7a51b7593f fix(analytics): problems (#12032) 2020-03-30 15:37:01 -05:00
Melior
1bfc55ece1 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (2081 of 2081 strings)

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

Translated using Weblate (Latin)

Currently translated at 100.0% (126 of 126 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (247 of 247 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (172 of 172 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (485 of 485 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% (298 of 298 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% (56 of 56 strings)

Translation: Habitica/Faq
Translate-URL: https://translate.habitica.com/projects/habitica/faq/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 (Dutch)

Currently translated at 100.0% (180 of 180 strings)

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

Translated using Weblate (Dutch)

Currently translated at 90.0% (1873 of 2081 strings)

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

Translated using Weblate (Dutch)

Currently translated at 100.0% (77 of 77 strings)

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

Translated using Weblate (Latin)

Currently translated at 96.5% (475 of 492 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (180 of 180 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (685 of 685 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/zh_Hans/
2020-03-30 19:33:38 +02:00
Matteo Pagliazzi
e21f64edaf fix(exports): disable non-working code and throw errors earlier when using the xml export (#12031) 2020-03-30 19:04:55 +02:00
dependabot-preview[bot]
a08b419411 build(deps): bump webpack from 4.42.0 to 4.42.1 in /website/client (#12029)
Bumps [webpack](https://github.com/webpack/webpack) from 4.42.0 to 4.42.1.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v4.42.0...v4.42.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-03-30 10:29:18 +02:00
dependabot-preview[bot]
4a752c3347 build(deps): bump helmet from 3.21.3 to 3.22.0 (#12023)
Bumps [helmet](https://github.com/helmetjs/helmet) from 3.21.3 to 3.22.0.
- [Release notes](https://github.com/helmetjs/helmet/releases)
- [Changelog](https://github.com/helmetjs/helmet/blob/master/CHANGELOG.md)
- [Commits](https://github.com/helmetjs/helmet/compare/v3.21.3...v3.22.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-03-30 10:28:10 +02:00
dependabot-preview[bot]
8609aae1b4 build(deps): bump aws-sdk from 2.643.0 to 2.648.0 (#12024)
Bumps [aws-sdk](https://github.com/aws/aws-sdk-js) from 2.643.0 to 2.648.0.
- [Release notes](https://github.com/aws/aws-sdk-js/releases)
- [Changelog](https://github.com/aws/aws-sdk-js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-js/compare/v2.643.0...v2.648.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-03-30 10:27:59 +02:00
dependabot-preview[bot]
d35fd9d90d build(deps): bump bootstrap-vue from 2.8.0 to 2.9.0 in /website/client (#12027)
Bumps [bootstrap-vue](https://github.com/bootstrap-vue/bootstrap-vue) from 2.8.0 to 2.9.0.
- [Release notes](https://github.com/bootstrap-vue/bootstrap-vue/releases)
- [Changelog](https://github.com/bootstrap-vue/bootstrap-vue/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/bootstrap-vue/bootstrap-vue/compare/v2.8.0...v2.9.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-03-30 10:27:23 +02:00
dependabot-preview[bot]
11103813f5 build(deps): bump mongoose from 5.9.5 to 5.9.6 (#12028)
Bumps [mongoose](https://github.com/Automattic/mongoose) from 5.9.5 to 5.9.6.
- [Release notes](https://github.com/Automattic/mongoose/releases)
- [Changelog](https://github.com/Automattic/mongoose/blob/master/History.md)
- [Commits](https://github.com/Automattic/mongoose/compare/5.9.5...5.9.6)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-03-30 10:26:52 +02:00
Matteo Pagliazzi
1a75c6a696 fix(gulp): do not use common code in imports when it has not been transpiled yet 2020-03-29 16:37:57 +02:00
Matteo Pagliazzi
6bef105cf6 fix(gulp): tasks order 2020-03-29 16:26:58 +02:00
Matteo Pagliazzi
3fffe7aa5c Content API Cache improvements (#12020)
* content api improvements

* add content cache to build step

* add tests
2020-03-29 16:15:23 +02:00
Matteo Pagliazzi
9ab9b0f553 IP Blocking (#12015)
* start implementing an ip blocker

* fix comments and add to list of middlewares

* fix code, comment code and improve response

* wip tests

* fix order

* fixes and tests
2020-03-28 15:44:54 +01:00
Melior
a00add46a7 Merge branch 'origin/develop' into Weblate. 2020-03-26 21:18:04 +01:00
Melior
b9d8da44de Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (357 of 357 strings)

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

Translated using Weblate (Latin)

Currently translated at 97.4% (75 of 77 strings)

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

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (492 of 492 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% (328 of 328 strings)

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

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (77 of 77 strings)

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

Translated using Weblate (Dutch)

Currently translated at 89.9% (1871 of 2081 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (2081 of 2081 strings)

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

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (172 of 172 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (685 of 685 strings)

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

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (77 of 77 strings)

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

Translated using Weblate (Dutch)

Currently translated at 89.4% (1862 of 2081 strings)

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

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (77 of 77 strings)

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

Merge branch 'origin/develop' into Weblate.

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (230 of 230 strings)

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

Translated using Weblate (Dutch)

Currently translated at 99.5% (246 of 247 strings)

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

Translated using Weblate (Dutch)

Currently translated at 90.6% (224 of 247 strings)

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

Translated using Weblate (Dutch)

Currently translated at 94.1% (162 of 172 strings)

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

Translated using Weblate (Dutch)

Currently translated at 100.0% (6 of 6 strings)

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

Translated using Weblate (Dutch)

Currently translated at 89.0% (1853 of 2081 strings)

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

Translated using Weblate (Japanese)

Currently translated at 100.0% (134 of 134 strings)

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

Translated using Weblate (Swedish)

Currently translated at 99.4% (512 of 515 strings)

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

Translated using Weblate (Swedish)

Currently translated at 99.2% (511 of 515 strings)

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

Translated using Weblate (Swedish)

Currently translated at 88.3% (68 of 77 strings)

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

Translated using Weblate (French)

Currently translated at 100.0% (180 of 180 strings)

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

Translated using Weblate (French)

Currently translated at 100.0% (2081 of 2081 strings)

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

Translated using Weblate (French)

Currently translated at 100.0% (77 of 77 strings)

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

Translated using Weblate (French)

Currently translated at 100.0% (357 of 357 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (180 of 180 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (2081 of 2081 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (2081 of 2081 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 99.7% (2076 of 2081 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 99.7% (2075 of 2081 strings)

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

Translated using Weblate (Latin)

Currently translated at 30.7% (44 of 143 strings)

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

Translated using Weblate (Latin)

Currently translated at 87.1% (449 of 515 strings)

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

Translated using Weblate (Latin)

Currently translated at 98.7% (76 of 77 strings)

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

Translated using Weblate (French)

Currently translated at 99.4% (179 of 180 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 98.6% (2053 of 2081 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 82.7% (149 of 180 strings)

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

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/

Translated using Weblate (Chinese (Traditional))

Currently translated at 98.6% (2053 of 2081 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 98.6% (2053 of 2081 strings)

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

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/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (230 of 230 strings)

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

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/

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/

Translated using Weblate (Dutch)

Currently translated at 98.6% (141 of 143 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 82.7% (149 of 180 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (180 of 180 strings)

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

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (180 of 180 strings)

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

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (180 of 180 strings)

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

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (2081 of 2081 strings)

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

Translated using Weblate (Dutch)

Currently translated at 88.7% (1847 of 2081 strings)

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

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (2081 of 2081 strings)

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

Translated using Weblate (English (Pirate))

Currently translated at 87.2% (1816 of 2081 strings)

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

Translated using Weblate (Dutch)

Currently translated at 95.7% (656 of 685 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (357 of 357 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% (357 of 357 strings)

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

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (357 of 357 strings)

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

Translated using Weblate (Dutch)

Currently translated at 100.0% (357 of 357 strings)

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

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (357 of 357 strings)

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

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (230 of 230 strings)

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

Translated using Weblate (Dutch)

Currently translated at 100.0% (77 of 77 strings)

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

Translated using Weblate (English (Pirate))

Currently translated at 100.0% (77 of 77 strings)

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

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (211 of 211 strings)

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

Translated using Weblate (Portuguese)

Currently translated at 92.8% (196 of 211 strings)

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

Translated using Weblate (Dutch)

Currently translated at 100.0% (211 of 211 strings)

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

Merge branch 'origin/develop' into Weblate.

Translated using Weblate (Japanese)

Currently translated at 100.0% (134 of 134 strings)

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

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/

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (6 of 6 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (685 of 685 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (685 of 685 strings)

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

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (685 of 685 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (77 of 77 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (77 of 77 strings)

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

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (77 of 77 strings)

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

Translated using Weblate (English (Pirate))

Currently translated at 96.1% (74 of 77 strings)

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

Translated using Weblate (German)

Currently translated at 97.4% (75 of 77 strings)

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

Translated using Weblate (Latin)

Currently translated at 94.3% (199 of 211 strings)

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

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/

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (140 of 140 strings)

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

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (172 of 172 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% (6 of 6 strings)

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

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (211 of 211 strings)

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

Translated using Weblate (Latin)

Currently translated at 91.2% (157 of 172 strings)

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

Translated using Weblate (Latin)

Currently translated at 98.6% (227 of 230 strings)

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

Translated using Weblate (Latin)

Currently translated at 100.0% (211 of 211 strings)

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

Translated using Weblate (Latin)

Currently translated at 81.7% (202 of 247 strings)

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

Translated using Weblate (Latin)

Currently translated at 90.7% (127 of 140 strings)

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

Translated using Weblate (Latin)

Currently translated at 94.0% (63 of 67 strings)

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

Translated using Weblate (Latin)

Currently translated at 86.8% (152 of 175 strings)

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

Translated using Weblate (Latin)

Currently translated at 96.5% (475 of 492 strings)

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

Translated using Weblate (Latin)

Currently translated at 98.9% (295 of 298 strings)

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

Translated using Weblate (Latin)

Currently translated at 84.9% (1745 of 2053 strings)

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

Translated using Weblate (Latin)

Currently translated at 100.0% (70 of 70 strings)

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

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (172 of 172 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% (77 of 77 strings)

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

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (211 of 211 strings)

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

Merge branch 'origin/develop' into Weblate.

Translated using Weblate (Japanese)

Currently translated at 100.0% (492 of 492 strings)

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

Translated using Weblate (German)

Currently translated at 100.0% (685 of 685 strings)

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

Translated using Weblate (Japanese)

Currently translated at 100.0% (492 of 492 strings)

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

Translated using Weblate (Dutch)

Currently translated at 89.5% (1839 of 2053 strings)

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

Translated using Weblate (Swedish)

Currently translated at 94.6% (53 of 56 strings)

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

Translated using Weblate (Dutch)

Currently translated at 100.0% (56 of 56 strings)

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

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (685 of 685 strings)

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

Translated using Weblate (French)

Currently translated at 100.0% (685 of 685 strings)

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

Translated using Weblate (Czech)

Currently translated at 86.4% (64 of 74 strings)

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

Merge branch 'origin/develop' into Weblate.

Translated using Weblate (Latin)

Currently translated at 87.1% (449 of 515 strings)

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

Translated using Weblate (French)

Currently translated at 100.0% (211 of 211 strings)

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

Translated using Weblate (Vietnamese)

Currently translated at 48.6% (36 of 74 strings)

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

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (143 of 143 strings)

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

Translated using Weblate (Japanese)

Currently translated at 99.3% (142 of 143 strings)

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

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/

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (492 of 492 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% (6 of 6 strings)

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

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (2053 of 2053 strings)

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

Translated using Weblate (Dutch)

Currently translated at 98.2% (55 of 56 strings)

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

Translated using Weblate (Japanese)

Currently translated at 91.8% (68 of 74 strings)

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

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (211 of 211 strings)

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

Translated using Weblate (Vietnamese)

Currently translated at 25.6% (19 of 74 strings)

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

Translated using Weblate (Vietnamese)

Currently translated at 87.3% (311 of 356 strings)

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

Translated using Weblate (Japanese)

Currently translated at 100.0% (492 of 492 strings)

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

Translated using Weblate (Japanese)

Currently translated at 100.0% (6 of 6 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (328 of 328 strings)

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

Translated using Weblate (Dutch)

Currently translated at 96.4% (54 of 56 strings)

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

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% (356 of 356 strings)

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

Translated using Weblate (Swedish)

Currently translated at 89.1% (66 of 74 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (211 of 211 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (211 of 211 strings)

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

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (211 of 211 strings)

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

Translated using Weblate (German)

Currently translated at 100.0% (211 of 211 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/de/
2020-03-26 21:17:54 +01:00
Sabe Jones
947e8a1836 4.138.2 2020-03-26 15:15:42 -05:00
Sabe Jones
7bdc974704 Merge branch 'develop' into release 2020-03-26 15:15:38 -05:00
Sabe Jones
fe8780d49c chore(news): Bailey 2020-03-26 15:15:25 -05:00
Matteo Pagliazzi
2fc4d0f00c fix(logger): only two arguments to logger when logging an unhandled promise rejection 2020-03-26 17:10:19 +01:00
inftp
eb4e382ecf stop 'pts' from overflowing to next line 2020-03-26 14:52:25 +11:00
Matteo Pagliazzi
4300c7b1bf Merge branch 'develop' of github.com:HabitRPG/habitica into develop 2020-03-24 20:31:27 +01:00
Matteo Pagliazzi
2cd0ed5973 fix(logger): improve logging and make sure no data is lost 2020-03-24 20:29:31 +01:00
Sabe Jones
6e8bdf4cdf Merge branch 'release' into develop 2020-03-24 13:14:15 -05:00
Sabe Jones
0bac1102cc 4.138.1 2020-03-24 13:13:55 -05:00
Sabe Jones
3e96e54ad8 feat(event): eggy eggy 2020-03-24 13:13:50 -05:00
Matteo Pagliazzi
3458d89c1d fix(webhook tests): do not rely on toLocaleString when checking for two dates to be close 2020-03-24 12:28:15 +01:00
Denys Dorokhov
25e72ad907 Reward with negative cost can no longer be created, fixes #11855 (#11870)
* Minor refactoring in scoreTask.js

* Reward value validation added (should be >= 0)
2020-03-24 12:10:10 +01:00
Bence László
5cf6a67a36 (website/client/src/components/settings/site.vue): Fix refresh the de-register social media buttons. (#11992) 2020-03-23 17:49:00 +01:00
Matteo Pagliazzi
9dcce382a3 fix(webhook tests): more reliable date test 2020-03-23 17:17:27 +01:00
chan_gami
f6484c872a Fixes Japanese conversion bugs on Safari and Chrome (#11917)
decided to fix using flags since KeyboardEvent.isComposing behaves differently depending on the browser
2020-03-23 16:35:17 +01:00
Alys
249ba77c01 edit string to say Pet Food, not food (#11994)
Also capitalise terms that are usually capitalised these days.
2020-03-23 16:32:37 +01:00
dependabot-preview[bot]
7ff590cd88 build(deps): bump mongoose from 5.9.3 to 5.9.5 (#12001)
Bumps [mongoose](https://github.com/Automattic/mongoose) from 5.9.3 to 5.9.5.
- [Release notes](https://github.com/Automattic/mongoose/releases)
- [Changelog](https://github.com/Automattic/mongoose/blob/master/History.md)
- [Commits](https://github.com/Automattic/mongoose/compare/5.9.3...5.9.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-03-23 10:58:24 +01:00
dependabot-preview[bot]
f297fef89e build(deps): bump @babel/preset-env from 7.8.7 to 7.9.0 (#12007)
Bumps [@babel/preset-env](https://github.com/babel/babel) from 7.8.7 to 7.9.0.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.8.7...v7.9.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-03-23 10:49:47 +01:00
dependabot-preview[bot]
b037cb0722 build(deps): bump @babel/register from 7.8.6 to 7.9.0 (#12009)
Bumps [@babel/register](https://github.com/babel/babel) from 7.8.6 to 7.9.0.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.8.6...v7.9.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-03-23 10:36:18 +01:00
dependabot-preview[bot]
b8c58a7e4f build(deps): bump morgan from 1.9.1 to 1.10.0 (#12000)
Bumps [morgan](https://github.com/expressjs/morgan) from 1.9.1 to 1.10.0.
- [Release notes](https://github.com/expressjs/morgan/releases)
- [Changelog](https://github.com/expressjs/morgan/blob/master/HISTORY.md)
- [Commits](https://github.com/expressjs/morgan/compare/1.9.1...1.10.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-03-23 10:35:30 +01:00
dependabot-preview[bot]
f973bf1038 build(deps): [security] bump acorn in /website/client (#11996)
Bumps [acorn](https://github.com/acornjs/acorn) from 6.3.0 to 6.4.1. **This update includes a security fix.**
- [Release notes](https://github.com/acornjs/acorn/releases)
- [Commits](https://github.com/acornjs/acorn/compare/6.3.0...6.4.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-03-23 10:35:10 +01:00
dependabot-preview[bot]
aaea985cf2 build(deps): bump bootstrap-vue from 2.7.0 to 2.8.0 in /website/client (#11997)
Bumps [bootstrap-vue](https://github.com/bootstrap-vue/bootstrap-vue) from 2.7.0 to 2.8.0.
- [Release notes](https://github.com/bootstrap-vue/bootstrap-vue/releases)
- [Changelog](https://github.com/bootstrap-vue/bootstrap-vue/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/bootstrap-vue/bootstrap-vue/compare/v2.7.0...v2.8.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-03-23 10:34:57 +01:00
dependabot-preview[bot]
1d0e08419f build(deps): bump @babel/core from 7.8.7 to 7.9.0 (#12003)
Bumps [@babel/core](https://github.com/babel/babel) from 7.8.7 to 7.9.0.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.8.7...v7.9.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-03-23 10:34:20 +01:00
dependabot-preview[bot]
fd6244eb15 build(deps): bump aws-sdk from 2.639.0 to 2.643.0 (#12004)
Bumps [aws-sdk](https://github.com/aws/aws-sdk-js) from 2.639.0 to 2.643.0.
- [Release notes](https://github.com/aws/aws-sdk-js/releases)
- [Changelog](https://github.com/aws/aws-sdk-js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-js/compare/v2.639.0...v2.643.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-03-23 10:34:03 +01:00
Matteo Pagliazzi
f8aa756d52 Disable Failing Webhooks (#11966)
* todo comment

* add failures field to webhooks and sanitize

* implement logic

* use update instead of save

* specify timeout and maximum number of retries

* add tests
2020-03-20 23:26:21 +01:00
Matteo Pagliazzi
ae7df804cb fix(promise): make sure every promise is handled 2020-03-20 20:07:13 +01:00
Sabe Jones
de37eb1bb2 Merge branch 'release' into develop 2020-03-19 08:12:00 -05:00
Sabe Jones
cf03261bbf 4.138.0 2020-03-19 08:11:37 -05:00
Sabe Jones
3ec95ad821 fix(event): feature something from 2020 2020-03-19 08:11:30 -05:00
Sabe Jones
57d11d5b20 Merge branch 'develop' into release 2020-03-19 08:10:56 -05:00
Matteo Pagliazzi
039e7d40b8 fix(tests): do not rely on emails order when user joins group plan 2020-03-18 23:31:01 +01:00
Matteo Pagliazzi
4389a9b478 Merge branch 'release' into develop 2020-03-18 20:39:14 +01:00
Matteo Pagliazzi
289032047c 4.137.1 2020-03-18 19:39:37 +01:00
Matteo Pagliazzi
6f5515214a update mongoose options 2020-03-18 19:36:10 +01:00
Sabe Jones
fd2c4e3265 fix(sprites): CUBBB 2020-03-18 13:35:53 -05:00
Matteo Pagliazzi
dd91bada8f Merge branch 'release' into develop 2020-03-18 19:30:11 +01:00
Matteo Pagliazzi
d724933640 update mongoose options 2020-03-18 19:20:09 +01:00
Sabe Jones
e4b74bc347 fix(content): feature shinies 2020-03-18 11:15:49 -05:00
Sabe Jones
c609db09c1 fix(content): feature shinies 2020-03-18 11:15:10 -05:00
Sabe Jones
55feebdf9e Merge branch 'release' into develop 2020-03-17 15:36:35 -05:00
Sabe Jones
d8a99647e7 chore(sprites): compile 2020-03-17 15:35:49 -05:00
Sabe Jones
353b4aed05 feat(content): Magic Hatching Potions 2020-03-17 15:35:38 -05:00
Sabe Jones
411f82202b feat(content): Spring Fling 2020 2020-03-17 14:49:22 -05:00
Sabe Jones
5a5a6e4c5d feat(content): Spring Fling 2020 2020-03-17 14:48:49 -05:00
Sabe Jones
914eee015e Merge branch 'release' into develop 2020-03-17 09:12:29 -05:00
Sabe Jones
bbbc06733b 4.137.0 2020-03-17 09:12:06 -05:00
Sabe Jones
92c3a640ee feat(content): Bug Bonanza achievement 2020-03-17 09:11:41 -05:00
tsukimi2
a301f817e9 Fix for party members missing from header after viewing private messages / inbox / PMs (#11912)
* Fix bug in missing party members in app header

* Modified by running lint

* Change code for handling missing party members in app header from within computed hiddenHeader property to watcher function on hiddenHeader

Co-authored-by: osiris <eynsan@yahoo.co.uk>
2020-03-16 22:17:52 +01:00
tsukimi2
519af8f1b6 Fix for search guilds result being inconsistent between "My Guilds" and "Discover Guilds" (#11903)
* Fix bug to allow guild summary and description to match against search term in MyGuilds component

* Add unit test to groupUtilities to test filterGroup function

* Changes made after running npm:run:lint

* Fix bug when filter guild function does not match against guild size correctly when the guild has member count = 100 or 1000

According to habitica wiki Guilds Guide, gold-tier guilds are guilds with 1000 or more members.  However, under the current code of filter guild function, it matches guilds as gold-tier as strictly more than 1000 members, excluding 1000 members.  Similar silver-tier guilds should have 100 to 999 members, but the current code it matches guilds as silver-tier for members between 101 and 999 members.

* Added unit tests to test the newly added code in the groupsUtilities mixin for the current issue

* Add unit testing to test search guild name, summary, and description in myGuilds component

* Add suggestions from lint

* Added searching by guild summary and white space handling in search terms.

For discover guilds component, added the following:
1) handling of searching by guild summary
2) preventing white space in search terms to display all guilds
3) added test cases for testing the search functionality in discove guilds to ensure consistent behaviour between the searching in MyGuilds and public guilds.

* Remove console statements from test file

* Implement suggestions from lint.

Co-authored-by: osiris <eynsan@yahoo.co.uk>
2020-03-16 20:03:48 +01:00
dependabot-preview[bot]
a71abea032 build(deps): bump @storybook/addon-knobs in /website/client (#11977)
Bumps [@storybook/addon-knobs](https://github.com/storybookjs/storybook/tree/HEAD/addons/knobs) from 5.3.14 to 5.3.17.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v5.3.17/addons/knobs)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-03-16 15:26:27 +01:00
dependabot-preview[bot]
3c623b08c4 build(deps): [security] bump acorn from 6.3.0 to 6.4.1 (#11970)
Bumps [acorn](https://github.com/acornjs/acorn) from 6.3.0 to 6.4.1. **This update includes a security fix.**
- [Release notes](https://github.com/acornjs/acorn/releases)
- [Commits](https://github.com/acornjs/acorn/compare/6.3.0...6.4.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-03-16 15:24:30 +01:00
dependabot-preview[bot]
ddfa3f8a91 build(deps): bump @storybook/vue in /website/client (#11984)
Bumps [@storybook/vue](https://github.com/storybookjs/storybook/tree/HEAD/app/vue) from 5.3.14 to 5.3.17.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v5.3.17/app/vue)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-03-16 15:22:52 +01:00
dependabot-preview[bot]
e2d1de0cf0 build(deps): bump @storybook/addon-links in /website/client (#11975)
Bumps [@storybook/addon-links](https://github.com/storybookjs/storybook/tree/HEAD/addons/links) from 5.3.14 to 5.3.17.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v5.3.17/addons/links)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-03-16 15:22:36 +01:00
dependabot-preview[bot]
9281de1801 build(deps): bump regenerator-runtime from 0.13.3 to 0.13.5 (#11976)
Bumps [regenerator-runtime](https://github.com/facebook/regenerator) from 0.13.3 to 0.13.5.
- [Release notes](https://github.com/facebook/regenerator/releases)
- [Commits](https://github.com/facebook/regenerator/compare/regenerator-runtime@0.13.3...regenerator-runtime@0.13.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-03-16 15:20:11 +01:00
dependabot-preview[bot]
4960171565 build(deps): bump sass from 1.26.2 to 1.26.3 in /website/client (#11973)
Bumps [sass](https://github.com/sass/dart-sass) from 1.26.2 to 1.26.3.
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.26.2...1.26.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-03-16 15:19:54 +01:00
dependabot-preview[bot]
d063a57faa build(deps): bump aws-sdk from 2.635.0 to 2.639.0 (#11978)
Bumps [aws-sdk](https://github.com/aws/aws-sdk-js) from 2.635.0 to 2.639.0.
- [Release notes](https://github.com/aws/aws-sdk-js/releases)
- [Changelog](https://github.com/aws/aws-sdk-js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-js/compare/v2.635.0...v2.639.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-03-16 15:19:41 +01:00
dependabot-preview[bot]
0960eaf571 build(deps): bump amplitude-js from 5.9.0 to 5.10.0 in /website/client (#11979)
Bumps [amplitude-js](https://github.com/amplitude/amplitude-javascript) from 5.9.0 to 5.10.0.
- [Release notes](https://github.com/amplitude/amplitude-javascript/releases)
- [Changelog](https://github.com/amplitude/Amplitude-JavaScript/blob/master/CHANGELOG.md)
- [Commits](https://github.com/amplitude/amplitude-javascript/compare/v5.9.0...v5.10.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-03-16 15:19:33 +01:00
dependabot-preview[bot]
fd0ec41c53 build(deps): bump vue2-perfect-scrollbar in /website/client (#11983)
Bumps [vue2-perfect-scrollbar](https://github.com/mercs600/vue2-perfect-scrollbar) from 1.3.0 to 1.4.0.
- [Release notes](https://github.com/mercs600/vue2-perfect-scrollbar/releases)
- [Commits](https://github.com/mercs600/vue2-perfect-scrollbar/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-03-16 15:18:53 +01:00
dependabot-preview[bot]
1420e1c8d7 build(deps): bump bootstrap-vue from 2.6.1 to 2.7.0 in /website/client (#11985)
Bumps [bootstrap-vue](https://github.com/bootstrap-vue/bootstrap-vue) from 2.6.1 to 2.7.0.
- [Release notes](https://github.com/bootstrap-vue/bootstrap-vue/releases)
- [Changelog](https://github.com/bootstrap-vue/bootstrap-vue/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/bootstrap-vue/bootstrap-vue/compare/v2.6.1...v2.7.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-03-16 15:18:40 +01:00
Matteo Pagliazzi
c7c854664f build(deps): bump @storybook/addon-notes in /website/client (#11986)
Bumps [@storybook/addon-notes](https://github.com/storybookjs/storybook/tree/HEAD/addons/notes) from 5.3.14 to 5.3.17.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/v5.3.17/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v5.3.17/addons/notes)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-03-16 15:18:31 +01:00
dependabot-preview[bot]
68e5679340 build(deps): bump @storybook/addon-actions in /website/client (#11987)
Bumps [@storybook/addon-actions](https://github.com/storybookjs/storybook/tree/HEAD/addons/actions) from 5.3.14 to 5.3.17.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v5.3.17/addons/actions)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-03-16 15:18:25 +01:00
dependabot-preview[bot]
32a9dda2c6 build(deps): bump @storybook/addon-notes in /website/client
Bumps [@storybook/addon-notes](https://github.com/storybookjs/storybook/tree/HEAD/addons/notes) from 5.3.14 to 5.3.17.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/v5.3.17/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v5.3.17/addons/notes)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-16 08:29:26 +00:00
Sabe Jones
8b19c0ad69 Merge branch 'release' into develop 2020-03-14 06:50:23 -05:00
Sabe Jones
bb8bd8842d 4.136.4 2020-03-14 06:49:55 -05:00
Alys
33e8b64df6 remove excess 'the' from two locales strings 2020-03-14 20:47:50 +10:00
Matteo Pagliazzi
1411706963 fix(party members): clone array to avoid infinite loops, fixes #11969 2020-03-13 23:48:10 +01:00
Sabe Jones
e94631a002 fix(test): food expectation, sigh 2020-03-13 11:10:28 -05:00
Sabe Jones
427251ed1d fix(test): food expectation, sigh 2020-03-13 11:10:08 -05:00
Sabe Jones
39bb60638f feat(content): Pi Day 2020 2020-03-13 10:59:52 -05:00
Sabe Jones
71e34e654c 4.136.3 2020-03-12 14:53:11 -05:00
Matteo Pagliazzi
f01aba15be fix(lint): run npm lint to fix formatting 2020-03-11 13:04:03 +01:00
Melior
fd4e760c05 Merge branch 'origin/develop' into Weblate. 2020-03-10 20:32:00 +01:00
Melior
b5ed65b164 Translated using Weblate (Latin)
Currently translated at 98.6% (227 of 230 strings)

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

Translated using Weblate (Vietnamese)

Currently translated at 17.5% (13 of 74 strings)

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

Translated using Weblate (Japanese)

Currently translated at 98.6% (141 of 143 strings)

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

Translated using Weblate (Japanese)

Currently translated at 100.0% (298 of 298 strings)

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

Translated using Weblate (Latin)

Currently translated at 100.0% (74 of 74 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (143 of 143 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (143 of 143 strings)

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

Translated using Weblate (Russian)

Currently translated at 99.3% (142 of 143 strings)

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

Translated using Weblate (French)

Currently translated at 100.0% (143 of 143 strings)

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

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (143 of 143 strings)

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

Translated using Weblate (German)

Currently translated at 100.0% (143 of 143 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (172 of 172 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (172 of 172 strings)

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

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (172 of 172 strings)

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

Translated using Weblate (French)

Currently translated at 100.0% (172 of 172 strings)

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

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 (Simplified))

Currently translated at 100.0% (8 of 8 strings)

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

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (172 of 172 strings)

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

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/

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 (English (United Kingdom))

Currently translated at 100.0% (8 of 8 strings)

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

Translated using Weblate (German)

Currently translated at 100.0% (172 of 172 strings)

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

Translated using Weblate (Russian)

Currently translated at 100.0% (67 of 67 strings)

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

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/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (492 of 492 strings)

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

Translated using Weblate (French)

Currently translated at 100.0% (492 of 492 strings)

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

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (492 of 492 strings)

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

Translated using Weblate (German)

Currently translated at 100.0% (492 of 492 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (6 of 6 strings)

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

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/

Translated using Weblate (Russian)

Currently translated at 100.0% (6 of 6 strings)

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

Translated using Weblate (French)

Currently translated at 100.0% (6 of 6 strings)

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

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (6 of 6 strings)

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

Translated using Weblate (Portuguese (Brazil))

Currently translated at 99.6% (2046 of 2053 strings)

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

Translated using Weblate (Dutch)

Currently translated at 89.4% (1836 of 2053 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (298 of 298 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (298 of 298 strings)

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

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (298 of 298 strings)

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

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (298 of 298 strings)

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

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/

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/

Translated using Weblate (Russian)

Currently translated at 96.4% (54 of 56 strings)

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

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/

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (56 of 56 strings)

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

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/

Translated using Weblate (Japanese)

Currently translated at 97.0% (665 of 685 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (356 of 356 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% (356 of 356 strings)

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

Translated using Weblate (Russian)

Currently translated at 100.0% (356 of 356 strings)

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

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (356 of 356 strings)

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

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (356 of 356 strings)

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

Translated using Weblate (Russian)

Currently translated at 100.0% (230 of 230 strings)

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

Translated using Weblate (English (Pirate))

Currently translated at 100.0% (230 of 230 strings)

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

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (515 of 515 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (74 of 74 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (74 of 74 strings)

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

Translated using Weblate (Russian)

Currently translated at 98.6% (73 of 74 strings)

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

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (74 of 74 strings)

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

Translated using Weblate (Dutch)

Currently translated at 100.0% (74 of 74 strings)

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

Translated using Weblate (French)

Currently translated at 100.0% (74 of 74 strings)

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

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (74 of 74 strings)

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

Translated using Weblate (German)

Currently translated at 100.0% (74 of 74 strings)

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

Translated using Weblate (Russian)

Currently translated at 100.0% (356 of 356 strings)

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

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% (298 of 298 strings)

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

Translated using Weblate (German)

Currently translated at 100.0% (298 of 298 strings)

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

Translated using Weblate (French)

Currently translated at 100.0% (356 of 356 strings)

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

Translated using Weblate (Russian)

Currently translated at 100.0% (212 of 212 strings)

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

Translated using Weblate (German)

Currently translated at 100.0% (8 of 8 strings)

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

Translated using Weblate (German)

Currently translated at 99.5% (490 of 492 strings)

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

Translated using Weblate (German)

Currently translated at 100.0% (6 of 6 strings)

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

Translated using Weblate (German)

Currently translated at 96.4% (54 of 56 strings)

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

Translated using Weblate (German)

Currently translated at 97.2% (72 of 74 strings)

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

Translated using Weblate (Dutch)

Currently translated at 89.2% (1833 of 2053 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (230 of 230 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (230 of 230 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% (65 of 65 strings)

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

Translated using Weblate (Turkish)

Currently translated at 71.8% (51 of 71 strings)

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

Translated using Weblate (Korean)

Currently translated at 37.4% (55 of 147 strings)

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

Translated using Weblate (Korean)

Currently translated at 12.5% (41 of 328 strings)

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

Translated using Weblate (Vietnamese)

Currently translated at 98.9% (295 of 298 strings)

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

Translated using Weblate (Korean)

Currently translated at 84.8% (1742 of 2053 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (247 of 247 strings)

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

Translated using Weblate (Dutch)

Currently translated at 85.0% (210 of 247 strings)

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

Translated using Weblate (Dutch)

Currently translated at 100.0% (489 of 489 strings)

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

Translated using Weblate (Dutch)

Currently translated at 89.1% (1831 of 2053 strings)

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

Translated using Weblate (French)

Currently translated at 100.0% (2053 of 2053 strings)

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

Translated using Weblate (Czech)

Currently translated at 96.8% (122 of 126 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (356 of 356 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% (230 of 230 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% (230 of 230 strings)

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

Translated using Weblate (French)

Currently translated at 100.0% (515 of 515 strings)

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

Translated using Weblate (Icelandic)

Currently translated at 100.0% (4 of 4 strings)

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

Translated using Weblate (Icelandic)

Currently translated at 100.0% (12 of 12 strings)

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

Translated using Weblate (Icelandic)

Currently translated at 16.9% (12 of 71 strings)

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

Translated using Weblate (Dutch)

Currently translated at 100.0% (211 of 211 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (140 of 140 strings)

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

Translated using Weblate (English (Pirate))

Currently translated at 100.0% (140 of 140 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (147 of 147 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (147 of 147 strings)

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

Translated using Weblate (Dutch)

Currently translated at 100.0% (147 of 147 strings)

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

Translated using Weblate (English (Pirate))

Currently translated at 100.0% (147 of 147 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% (172 of 172 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (175 of 175 strings)

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

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (175 of 175 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (485 of 485 strings)

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

Translated using Weblate (Russian)

Currently translated at 99.7% (488 of 489 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (2053 of 2053 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (2053 of 2053 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% (2053 of 2053 strings)

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

Translated using Weblate (Russian)

Currently translated at 99.3% (2040 of 2053 strings)

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

Translated using Weblate (Dutch)

Currently translated at 88.9% (1827 of 2053 strings)

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

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (2053 of 2053 strings)

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

Translated using Weblate (German)

Currently translated at 100.0% (2053 of 2053 strings)

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

Translated using Weblate (Dutch)

Currently translated at 100.0% (298 of 298 strings)

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

Translated using Weblate (English (Pirate))

Currently translated at 100.0% (298 of 298 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (328 of 328 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (328 of 328 strings)

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

Translated using Weblate (Dutch)

Currently translated at 100.0% (328 of 328 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (63 of 63 strings)

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

Translated using Weblate (Dutch)

Currently translated at 100.0% (63 of 63 strings)

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

Translated using Weblate (Dutch)

Currently translated at 100.0% (356 of 356 strings)

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

Translated using Weblate (English (Pirate))

Currently translated at 100.0% (356 of 356 strings)

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

Translated using Weblate (Dutch)

Currently translated at 100.0% (230 of 230 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (515 of 515 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (515 of 515 strings)

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

Translated using Weblate (Russian)

Currently translated at 98.2% (506 of 515 strings)

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

Translated using Weblate (Dutch)

Currently translated at 100.0% (515 of 515 strings)

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

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (515 of 515 strings)

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

Translated using Weblate (English (Pirate))

Currently translated at 100.0% (515 of 515 strings)

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

Translated using Weblate (German)

Currently translated at 100.0% (515 of 515 strings)

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

Translated using Weblate (English (Pirate))

Currently translated at 100.0% (71 of 71 strings)

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

Translated using Weblate (English (Pirate))

Currently translated at 100.0% (212 of 212 strings)

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

Translated using Weblate (German)

Currently translated at 100.0% (2053 of 2053 strings)

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

Translated using Weblate (German)

Currently translated at 100.0% (2053 of 2053 strings)

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

Translated using Weblate (English (United Kingdom))

Currently translated at 98.6% (508 of 515 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/en_GB/
2020-03-10 20:31:40 +01:00
Sabe Jones
4ee14e7c2a Merge branch 'release' into develop 2020-03-10 14:26:47 -05:00
Sabe Jones
f40fb510a9 4.136.2 2020-03-10 14:25:42 -05:00
Sabe Jones
86951916e8 feat(content): enable bug hugging 2020-03-10 14:25:30 -05:00
Matteo Pagliazzi
fde8e54783 fix(readme): remove greenkeeper badge 2020-03-10 11:45:37 +01:00
Matteo Pagliazzi
276e882092 fix(challenges): handle case where challenge has no categories or result is empty 2020-03-09 21:17:27 +01:00
Alec Brickner
88bfed7efe Ensure official challenges are listed first (fixes #11018) (#11030)
* Ensure official challenges are listed first

* Fix lint errors

* Move query creation into separate function

* switching branches

* Fixes and tests

* Formatting fixes

* Linting

* fix tests
2020-03-09 20:08:28 +01:00
Nik
0936c2ff86 Special case for member profile name. (#11918)
* Special case for member profile name.

Use a case insensitive order by

* Use of localeCompare function for name comparison
2020-03-09 17:59:30 +01:00
Nik
bdedf8f563 Fix asc/desc sort order when sorted by name (#11919)
* Fix asc/desc sort order when sorted by name

* Revert changes.

Use localeCompare but considering sort order
2020-03-09 17:56:43 +01:00
Carl Vuorinen
9220323483 Move collapseChecklist tooltip (#11954)
So that checklist items can be checked even when tooltip shown
Fixes #11888
2020-03-09 17:28:09 +01:00
Matteo Pagliazzi
80c93ad934 Merge branch 'release' into develop 2020-03-09 16:22:08 +01:00
Matteo Pagliazzi
010da977a4 fix(sign up): prevent double request to sign up route 2020-03-09 16:21:57 +01:00
Matteo Pagliazzi
b9bfb3f722 fix(logs): call split on strings only 2020-03-09 16:18:57 +01:00
Joanna Cholewa
effb66a089 Replace setUsernameNotificationBody setting with changeUsernameDisclaimer and alter disclaimer text (#11953) 2020-03-09 15:48:54 +01:00
Matteo Pagliazzi
dbdb5f81a5 Merge branch 'release' into develop 2020-03-09 15:16:22 +01:00
Matteo Pagliazzi
2062e78959 fix(logs): FCM, only log defined errors 2020-03-09 15:16:10 +01:00
Matteo Pagliazzi
018c5edfdd fix(logs): FCM, only log defined errors 2020-03-09 15:13:15 +01:00
dependabot-preview[bot]
b0a3e58d66 build(deps): bump @babel/core from 7.8.6 to 7.8.7 (#11961)
Bumps [@babel/core](https://github.com/babel/babel) from 7.8.6 to 7.8.7.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.8.6...v7.8.7)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-03-09 13:36:27 +01:00
dependabot-preview[bot]
99960da2eb build(deps): bump bootstrap-vue from 2.5.0 to 2.6.1 in /website/client (#11963)
Bumps [bootstrap-vue](https://github.com/bootstrap-vue/bootstrap-vue) from 2.5.0 to 2.6.1.
- [Release notes](https://github.com/bootstrap-vue/bootstrap-vue/releases)
- [Changelog](https://github.com/bootstrap-vue/bootstrap-vue/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/bootstrap-vue/bootstrap-vue/compare/v2.5.0...v2.6.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-03-09 13:33:38 +01:00
dependabot-preview[bot]
8c293505c4 build(deps): bump aws-sdk from 2.630.0 to 2.635.0 (#11960)
Bumps [aws-sdk](https://github.com/aws/aws-sdk-js) from 2.630.0 to 2.635.0.
- [Release notes](https://github.com/aws/aws-sdk-js/releases)
- [Changelog](https://github.com/aws/aws-sdk-js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-js/compare/v2.630.0...v2.635.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-03-09 13:33:26 +01:00
dependabot-preview[bot]
10ac99fc2e build(deps): bump @babel/preset-env from 7.8.6 to 7.8.7 (#11958)
Bumps [@babel/preset-env](https://github.com/babel/babel) from 7.8.6 to 7.8.7.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.8.6...v7.8.7)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-03-09 13:33:12 +01:00
dependabot-preview[bot]
34c7d4e3b8 build(deps): bump gulp-nodemon from 2.4.2 to 2.5.0 (#11955)
Bumps [gulp-nodemon](https://github.com/JacksonGariety/gulp-nodemon) from 2.4.2 to 2.5.0.
- [Release notes](https://github.com/JacksonGariety/gulp-nodemon/releases)
- [Commits](https://github.com/JacksonGariety/gulp-nodemon/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-03-09 13:31:51 +01:00
dependabot-preview[bot]
50d9a355b0 build(deps): bump mongoose from 5.9.2 to 5.9.3 (#11956)
Bumps [mongoose](https://github.com/Automattic/mongoose) from 5.9.2 to 5.9.3.
- [Release notes](https://github.com/Automattic/mongoose/releases)
- [Changelog](https://github.com/Automattic/mongoose/blob/master/History.md)
- [Commits](https://github.com/Automattic/mongoose/compare/5.9.2...5.9.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-03-09 13:31:16 +01:00
dependabot-preview[bot]
35b5285ce6 build(deps): bump eslint-plugin-vue in /website/client (#11964)
Bumps [eslint-plugin-vue](https://github.com/vuejs/eslint-plugin-vue) from 6.2.1 to 6.2.2.
- [Release notes](https://github.com/vuejs/eslint-plugin-vue/releases)
- [Commits](https://github.com/vuejs/eslint-plugin-vue/compare/v6.2.1...v6.2.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-03-09 13:30:18 +01:00
Sabe Jones
2001b27c26 fix(test): comment unreliable error message 2020-03-07 13:31:50 -06:00
Sabe Jones
7064b363e0 fix(test): comment unreliable error message 2020-03-07 13:31:31 -06:00
Sabe Jones
c5147a696d 4.136.1 2020-03-07 13:18:39 -06:00
Sabe Jones
bd8e67a2ea Adventure Guide Prep (#11883)
* WIP(adventure): prereqs

* WIP(drops): new modal

* WIP(adventure): analytics fixes etc

* feat(adventure): random egg+potion on 2nd task

* fix(lint): noworkies

* fix(modal): correctly construct classes

* fix(tests): expectations and escape

* fix(first-drops): address comments

* fix(first-drops): don't give random drops until first drops

* fix(drops): remove more Level 3 references

* refactor(drops): no need for cloning

* refactor(drops): unnecessary export

* fix(first-drops): force sync

* fix(first-drops): move to server

* fix(first-drops): escape in case we get here with >0 items

* fix(lint): line length

* fix(pet-food): remove unused string
2020-03-07 13:03:13 -06:00
Matteo Pagliazzi
db1bda1bcd tests(message model): add unit tests 2020-03-04 17:51:14 +01:00
negue
fe6c21800c Fixing layout issues for the private messages page (#11766)
* fix: first batch of layout issues for private messages + auto sizing textarea

* username second line - open profile on face-avatar/conversation name - fix textarea height

* refresh on sync

* new "you dont have any messages" style + changed min textarea height

* new conversationItem style / layout

* reset message unread on reload

* fix styles / textarea height

* list optOut / chatRevoked informations for each conversation + show why its disabled

* Block / Unblock - correct disabled states - $gray-200 instead of 300/400

* canReceive not checking chatRevoked

* fix: faceAvatar / userLink open the selected conversation user

* check if the target user is blocking the logged-in user

* check if blocks is undefined

* max-height instead of height

* fix "no messages" state + canReceive on a new conversation

* fixed conversations width (280px on max 768 width page)

* call autosize after message is sent

* only color the placeholder

* only load the current user avatar/settings/flags

* show only the current avatar on private messages
2020-03-04 17:50:08 +01:00
Matteo Pagliazzi
2ff9dfe965 Fix username links resulting in truncated chat messages (#11945)
* introduce MAX_MESSAGE_LENGTH constant

* add test

* fix path

* fix and tests

* fix typo in tests
2020-03-04 11:49:14 +01:00
Melior
75068ceb9e Merge branch 'origin/develop' into Weblate. 2020-03-03 23:20:08 +01:00
Melior
462eac2599 Translated using Weblate (Latin)
Currently translated at 88.3% (449 of 508 strings)

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

Translated using Weblate (Dutch)

Currently translated at 94.2% (479 of 508 strings)

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

Translated using Weblate (Dutch)

Currently translated at 100.0% (65 of 65 strings)

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

Translated using Weblate (Japanese)

Currently translated at 100.0% (212 of 212 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/ja/
2020-03-03 23:19:11 +01:00
Sabe Jones
3fe307f6ea Merge branch 'release' into develop 2020-03-03 16:15:52 -06:00
Sabe Jones
bb418da91f 4.136.0 2020-03-03 16:12:57 -06:00
Sabe Jones
08856ecc9f chore(news): nother Bailey 2020-03-03 16:12:30 -06:00
Sabe Jones
9e925513b0 Merge branch 'sabrecat/armoire-202003' into release 2020-03-03 15:28:05 -06:00
Melior
d747e97cea Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (247 of 247 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (247 of 247 strings)

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

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (247 of 247 strings)

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

Translated using Weblate (French)

Currently translated at 100.0% (247 of 247 strings)

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

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (247 of 247 strings)

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

Translated using Weblate (German)

Currently translated at 100.0% (247 of 247 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (2045 of 2045 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (2045 of 2045 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% (2045 of 2045 strings)

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

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (2045 of 2045 strings)

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

Translated using Weblate (French)

Currently translated at 100.0% (2045 of 2045 strings)

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

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (2045 of 2045 strings)

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

Translated using Weblate (German)

Currently translated at 100.0% (2045 of 2045 strings)

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

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (298 of 298 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/pt_BR/
2020-03-02 23:41:14 +01:00
Sabe Jones
bccd8e0000 Merge branch 'release' into develop 2020-03-02 16:21:24 -06:00
Sabe Jones
1035af0d25 4.135.1 2020-03-02 16:20:56 -06:00
Sabe Jones
80b302c997 chore(news): Bailey 2020-03-02 16:20:48 -06:00
Matteo Pagliazzi
f448c8cdfb Merge branch 'MynahMarie-fix_addlNotes' into develop 2020-03-02 22:42:48 +01:00
Matteo Pagliazzi
77195c64cf add missing june2018 string 2020-03-02 22:42:28 +01:00
Matteo Pagliazzi
1efc030544 Merge branch 'fix_addlNotes' of https://github.com/MynahMarie/habitica into MynahMarie-fix_addlNotes 2020-03-02 22:38:58 +01:00
tsukimi2
5ad30e815a Change where members info is retrieved in Group component: Fixes #11737 (#11886)
* Change where members info is retrieved in Group component.

In Group component, changes the place where members data is retrieved from the load function originally to within the watch group function, so that when group data has changed, the code will update the corresponding members data as well.

* Moving the code for loading members data from watcher to inside fetchGuilds function

* Complying with lint

Co-authored-by: kazekunGb <eynsan@yahoo.co.uk>
Co-authored-by: Matteo Pagliazzi <matteopagliazzi@gmail.com>
2020-03-02 22:09:53 +01:00
Alec Brickner
966bcf8010 Ensure first-time purchases are synced (#11915)
* Ensure first-time purchases are synced

* whitespace commit to trigger tests

* Undo whitespace commit

* more whitespace

* remove the whitespace
2020-03-02 21:34:23 +01:00
Sabe Jones
8ebda9f7bd fix(content): missing strings 2020-03-02 07:47:04 -06:00
Sabe Jones
6192b563e9 chore(sprites): compile 2020-03-02 07:33:03 -06:00
Sabe Jones
6763e178d4 feat(content): armoire and Bee Gees 2020-03-02 07:32:53 -06:00
Matteo Pagliazzi
6a9025200c fix(logs): disable colors in production logs 2020-03-02 11:33:11 +01:00
Matteo Pagliazzi
4e3481445c fix(logs): log text message in production 2020-03-02 11:20:56 +01:00
Matteo Pagliazzi
8300464cfc Merge pull request #11887 from HabitRPG/stackdriver-winston
Logs improvements
2020-03-02 11:05:15 +01:00
Matteo Pagliazzi
abb4899552 Merge pull request #11916 from HabitRPG/fix-corrupt-data
Fix corrupt data
2020-03-02 11:03:32 +01:00
Matteo Pagliazzi
90f88c42f6 remove console.log 2020-03-02 10:26:21 +01:00
Matteo Pagliazzi
a4f84342ca build(deps): bump @storybook/addon-actions in /website/client (#11929)
Bumps [@storybook/addon-actions](https://github.com/storybookjs/storybook/tree/HEAD/addons/actions) from 5.3.13 to 5.3.14.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v5.3.14/addons/actions)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-02 10:18:24 +01:00
dependabot-preview[bot]
a90d1187e0 build(deps): bump @vue/cli-plugin-unit-mocha in /website/client (#11937)
Bumps [@vue/cli-plugin-unit-mocha](https://github.com/vuejs/vue-cli/tree/HEAD/packages/@vue/cli-plugin-unit-mocha) from 4.2.2 to 4.2.3.
- [Release notes](https://github.com/vuejs/vue-cli/releases)
- [Changelog](https://github.com/vuejs/vue-cli/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/vuejs/vue-cli/commits/v4.2.3/packages/@vue/cli-plugin-unit-mocha)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-02 10:18:17 +01:00
dependabot-preview[bot]
88b130a219 build(deps): bump @storybook/addon-actions in /website/client
Bumps [@storybook/addon-actions](https://github.com/storybookjs/storybook/tree/HEAD/addons/actions) from 5.3.13 to 5.3.14.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v5.3.14/addons/actions)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-02 09:17:33 +00:00
dependabot-preview[bot]
637e179951 build(deps): bump @vue/cli-plugin-eslint in /website/client (#11928)
Bumps [@vue/cli-plugin-eslint](https://github.com/vuejs/vue-cli/tree/HEAD/packages/@vue/cli-plugin-eslint) from 4.2.2 to 4.2.3.
- [Release notes](https://github.com/vuejs/vue-cli/releases)
- [Changelog](https://github.com/vuejs/vue-cli/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/vuejs/vue-cli/commits/v4.2.3/packages/@vue/cli-plugin-eslint)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-02 10:16:38 +01:00
dependabot-preview[bot]
49e0077c67 build(deps): bump @babel/preset-env from 7.8.4 to 7.8.6 (#11927)
Bumps [@babel/preset-env](https://github.com/babel/babel) from 7.8.4 to 7.8.6.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.8.4...v7.8.6)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-02 10:15:02 +01:00
dependabot-preview[bot]
0787582e58 build(deps): bump @storybook/addon-notes in /website/client (#11933)
Bumps [@storybook/addon-notes](https://github.com/storybookjs/storybook/tree/HEAD/addons/notes) from 5.3.13 to 5.3.14.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/v5.3.14/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v5.3.14/addons/notes)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-02 10:14:02 +01:00
dependabot-preview[bot]
1c942eb8f3 build(deps): bump @storybook/addon-knobs in /website/client (#11932)
Bumps [@storybook/addon-knobs](https://github.com/storybookjs/storybook/tree/HEAD/addons/knobs) from 5.3.13 to 5.3.14.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v5.3.14/addons/knobs)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-02 10:13:50 +01:00
dependabot-preview[bot]
d67f6ae471 build(deps): bump aws-sdk from 2.624.0 to 2.630.0 (#11922)
Bumps [aws-sdk](https://github.com/aws/aws-sdk-js) from 2.624.0 to 2.630.0.
- [Release notes](https://github.com/aws/aws-sdk-js/releases)
- [Changelog](https://github.com/aws/aws-sdk-js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-js/compare/v2.624.0...v2.630.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-02 10:11:49 +01:00
dependabot-preview[bot]
55baed38b5 build(deps): bump @babel/core from 7.8.4 to 7.8.6 (#11923)
Bumps [@babel/core](https://github.com/babel/babel) from 7.8.4 to 7.8.6.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.8.4...v7.8.6)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-02 10:11:41 +01:00
dependabot-preview[bot]
7ef55d0283 build(deps): bump helmet from 3.21.2 to 3.21.3 (#11926)
Bumps [helmet](https://github.com/helmetjs/helmet) from 3.21.2 to 3.21.3.
- [Release notes](https://github.com/helmetjs/helmet/releases)
- [Changelog](https://github.com/helmetjs/helmet/blob/master/CHANGELOG.md)
- [Commits](https://github.com/helmetjs/helmet/compare/v3.21.2...v3.21.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-02 10:11:24 +01:00
dependabot-preview[bot]
8fac74e812 build(deps): bump @babel/register from 7.8.3 to 7.8.6 (#11921)
Bumps [@babel/register](https://github.com/babel/babel) from 7.8.3 to 7.8.6.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.8.3...v7.8.6)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-02 10:11:13 +01:00
dependabot-preview[bot]
3f2d1bf430 build(deps): bump @vue/cli-service in /website/client (#11936)
Bumps [@vue/cli-service](https://github.com/vuejs/vue-cli/tree/HEAD/packages/@vue/cli-service) from 4.2.2 to 4.2.3.
- [Release notes](https://github.com/vuejs/vue-cli/releases)
- [Changelog](https://github.com/vuejs/vue-cli/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/vuejs/vue-cli/commits/v4.2.3/packages/@vue/cli-service)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-02 10:10:46 +01:00
dependabot-preview[bot]
42cfc7d851 build(deps): bump @storybook/vue in /website/client (#11934)
Bumps [@storybook/vue](https://github.com/storybookjs/storybook/tree/HEAD/app/vue) from 5.3.13 to 5.3.14.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v5.3.14/app/vue)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-02 10:10:32 +01:00
dependabot-preview[bot]
ef7724203e build(deps): bump sass from 1.25.0 to 1.26.2 in /website/client (#11938)
Bumps [sass](https://github.com/sass/dart-sass) from 1.25.0 to 1.26.2.
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.25.0...1.26.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-02 10:10:14 +01:00
dependabot-preview[bot]
09cec21cde build(deps): bump @storybook/addon-links in /website/client (#11939)
Bumps [@storybook/addon-links](https://github.com/storybookjs/storybook/tree/HEAD/addons/links) from 5.3.13 to 5.3.14.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v5.3.14/addons/links)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-02 10:10:08 +01:00
dependabot-preview[bot]
fc987c11e9 build(deps): bump vue-router from 3.1.5 to 3.1.6 in /website/client (#11931)
Bumps [vue-router](https://github.com/vuejs/vue-router) from 3.1.5 to 3.1.6.
- [Release notes](https://github.com/vuejs/vue-router/releases)
- [Changelog](https://github.com/vuejs/vue-router/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/vuejs/vue-router/compare/v3.1.5...v3.1.6)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-02 10:09:54 +01:00
dependabot-preview[bot]
3678861c48 build(deps): bump @vue/cli-plugin-router in /website/client (#11935)
Bumps [@vue/cli-plugin-router](https://github.com/vuejs/vue-cli/tree/HEAD/packages/@vue/cli-plugin-router) from 4.2.2 to 4.2.3.
- [Release notes](https://github.com/vuejs/vue-cli/releases)
- [Changelog](https://github.com/vuejs/vue-cli/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/vuejs/vue-cli/commits/v4.2.3/packages/@vue/cli-plugin-router)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-02 10:09:30 +01:00
dependabot-preview[bot]
a6463e1fba build(deps): bump babel-eslint from 10.0.3 to 10.1.0 in /website/client (#11942)
Bumps [babel-eslint](https://github.com/babel/babel-eslint) from 10.0.3 to 10.1.0.
- [Release notes](https://github.com/babel/babel-eslint/releases)
- [Commits](https://github.com/babel/babel-eslint/compare/v10.0.3...v10.1.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-02 10:09:02 +01:00
dependabot-preview[bot]
0e4d4c2235 build(deps): bump webpack from 4.41.6 to 4.42.0 in /website/client (#11940)
Bumps [webpack](https://github.com/webpack/webpack) from 4.41.6 to 4.42.0.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v4.41.6...v4.42.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-02 10:08:49 +01:00
dependabot-preview[bot]
09b76008ea build(deps): bump @vue/cli-plugin-babel in /website/client (#11943)
Bumps [@vue/cli-plugin-babel](https://github.com/vuejs/vue-cli/tree/HEAD/packages/@vue/cli-plugin-babel) from 4.2.2 to 4.2.3.
- [Release notes](https://github.com/vuejs/vue-cli/releases)
- [Changelog](https://github.com/vuejs/vue-cli/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/vuejs/vue-cli/commits/v4.2.3/packages/@vue/cli-plugin-babel)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-02 10:08:37 +01:00
Matteo Pagliazzi
c2a79e1d7c fix tests 2020-03-01 22:37:29 +01:00
Matteo Pagliazzi
c5208f0ef6 fix tags 2020-03-01 22:21:53 +01:00
Matteo Pagliazzi
979d0c519d add final tests for push devices and notifications 2020-03-01 22:10:11 +01:00
Matteo Pagliazzi
3f5ee32684 fix invalid push devices 2020-03-01 21:49:52 +01:00
Matteo Pagliazzi
6deee0ffc8 notifications tests 2020-03-01 21:29:57 +01:00
Matteo Pagliazzi
a11e4d0512 fix lint 2020-03-01 20:53:33 +01:00
Matteo Pagliazzi
118e3580d6 refactor notifications cleanup 2020-03-01 20:06:24 +01:00
Matteo Pagliazzi
343f276705 re-enable notifications validation 2020-03-01 13:30:22 +01:00
Tom Thorpe
c00a1d74f9 Allow group links on challenge details to be opened in a new tab (#11889)
* - Use `router-link` in `groupLink` to make links that can be followed in a new tab

* - Add back the missing `if` statement that was removed in error
2020-02-29 18:46:41 +01:00
Matteo Pagliazzi
ae3f014bb2 add ability to disable console logs in prod while keeping loggly active 2020-02-29 17:48:09 +01:00
Matteo Pagliazzi
15e6cef7c4 fix tests 2020-02-29 17:40:46 +01:00
Melior
b8c2d5eb20 Merge branch 'origin/develop' into Weblate. 2020-02-28 22:32:27 +01:00
Melior
a444e876d1 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (2041 of 2041 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/zh_Hans/
2020-02-28 22:32:14 +01:00
Sabe Jones
24b347af8e Merge branch 'release' into develop 2020-02-28 15:28:21 -06:00
Sabe Jones
76039020f5 4.135.0 2020-02-28 15:27:58 -06:00
Sabe Jones
cbcfb21deb chore(sprites): compile 2020-02-28 15:27:22 -06:00
Sabe Jones
f47ec3d85f feat(content): mystery set March 2020 2020-02-28 15:27:14 -06:00
dependabot-preview[bot]
517d56f9fc build(deps-dev): bump chalk from 2.4.2 to 3.0.0 (#11531)
Bumps [chalk](https://github.com/chalk/chalk) from 2.4.2 to 3.0.0.
- [Release notes](https://github.com/chalk/chalk/releases)
- [Commits](https://github.com/chalk/chalk/compare/v2.4.2...v3.0.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-28 19:33:38 +01:00
Matteo Pagliazzi
a5c4871183 Merge branch 'develop' into stackdriver-winston 2020-02-28 19:32:22 +01:00
Sabe Jones
aee08ba0f9 fix(bulk-email): wait 5s per 250 messages for server queue 2020-02-28 13:35:27 +00:00
Sabe Jones
e1f9cac37a fix(gdpr): forbidden domain 2020-02-28 13:30:41 +00:00
Sabe Jones
c9bb96d2be fix(gdpr): unique key fix 2020-02-28 13:30:15 +00:00
Melior
b0d86ff37b Merge branch 'origin/develop' into Weblate. 2020-02-27 22:04:57 +01:00
Melior
3f3ebeffa1 Translated using Weblate (Latin)
Currently translated at 100.0% (71 of 71 strings)

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

Translated using Weblate (Japanese)

Currently translated at 100.0% (172 of 172 strings)

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

Translated using Weblate (Japanese)

Currently translated at 100.0% (489 of 489 strings)

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

Translated using Weblate (Japanese)

Currently translated at 100.0% (328 of 328 strings)

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

Translated using Weblate (Indonesian)

Currently translated at 18.3% (13 of 71 strings)

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

Translated using Weblate (Belarusian)

Currently translated at 97.3% (476 of 489 strings)

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

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/

Translated using Weblate (Russian)

Currently translated at 94.3% (232 of 246 strings)

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

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (172 of 172 strings)

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

Translated using Weblate (Russian)

Currently translated at 99.5% (487 of 489 strings)

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

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (489 of 489 strings)

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

Translated using Weblate (Japanese)

Currently translated at 99.7% (488 of 489 strings)

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

Translated using Weblate (Russian)

Currently translated at 99.8% (2037 of 2041 strings)

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

Translated using Weblate (Russian)

Currently translated at 99.7% (683 of 685 strings)

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

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (685 of 685 strings)

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

Translated using Weblate (Russian)

Currently translated at 99.4% (505 of 508 strings)

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

Translated using Weblate (Russian)

Currently translated at 100.0% (71 of 71 strings)

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

Translated using Weblate (Russian)

Currently translated at 99.5% (211 of 212 strings)

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

Translated using Weblate (German)

Currently translated at 100.0% (212 of 212 strings)

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

Translated using Weblate (German)

Currently translated at 100.0% (172 of 172 strings)

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

Translated using Weblate (German)

Currently translated at 100.0% (147 of 147 strings)

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

Translated using Weblate (German)

Currently translated at 100.0% (2041 of 2041 strings)

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

Translated using Weblate (Vietnamese)

Currently translated at 34.4% (113 of 328 strings)

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

Translated using Weblate (Vietnamese)

Currently translated at 80.7% (410 of 508 strings)

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

Translated using Weblate (Russian)

Currently translated at 92.2% (227 of 246 strings)

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

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (246 of 246 strings)

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

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (246 of 246 strings)

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

Translated using Weblate (German)

Currently translated at 100.0% (246 of 246 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (140 of 140 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (140 of 140 strings)

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

Translated using Weblate (Russian)

Currently translated at 99.2% (139 of 140 strings)

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

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (140 of 140 strings)

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

Translated using Weblate (French)

Currently translated at 100.0% (140 of 140 strings)

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

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (140 of 140 strings)

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

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (172 of 172 strings)

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

Translated using Weblate (French)

Currently translated at 100.0% (172 of 172 strings)

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

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (172 of 172 strings)

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

Translated using Weblate (German)

Currently translated at 100.0% (172 of 172 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (489 of 489 strings)

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

Translated using Weblate (Russian)

Currently translated at 99.1% (485 of 489 strings)

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

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (489 of 489 strings)

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

Translated using Weblate (French)

Currently translated at 100.0% (489 of 489 strings)

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

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (489 of 489 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (328 of 328 strings)

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

Translated using Weblate (Russian)

Currently translated at 100.0% (328 of 328 strings)

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

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (328 of 328 strings)

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

Translated using Weblate (French)

Currently translated at 100.0% (328 of 328 strings)

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

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (328 of 328 strings)

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

Translated using Weblate (German)

Currently translated at 100.0% (328 of 328 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (356 of 356 strings)

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

Translated using Weblate (Hungarian)

Currently translated at 81.2% (413 of 508 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (71 of 71 strings)

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

Translated using Weblate (Russian)

Currently translated at 97.1% (69 of 71 strings)

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

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (71 of 71 strings)

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

Translated using Weblate (French)

Currently translated at 100.0% (71 of 71 strings)

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

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (71 of 71 strings)

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

Translated using Weblate (German)

Currently translated at 100.0% (71 of 71 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (212 of 212 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (212 of 212 strings)

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

Translated using Weblate (Russian)

Currently translated at 98.5% (209 of 212 strings)

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

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (212 of 212 strings)

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

Translated using Weblate (French)

Currently translated at 100.0% (212 of 212 strings)

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

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (212 of 212 strings)

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

Translated using Weblate (German)

Currently translated at 100.0% (212 of 212 strings)

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

Translated using Weblate (German)

Currently translated at 100.0% (246 of 246 strings)

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

Translated using Weblate (German)

Currently translated at 100.0% (246 of 246 strings)

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

Translated using Weblate (German)

Currently translated at 100.0% (71 of 71 strings)

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

Translated using Weblate (German)

Currently translated at 100.0% (71 of 71 strings)

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

Translated using Weblate (German)

Currently translated at 100.0% (71 of 71 strings)

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

Translated using Weblate (German)

Currently translated at 100.0% (140 of 140 strings)

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

Translated using Weblate (German)

Currently translated at 100.0% (140 of 140 strings)

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

Translated using Weblate (German)

Currently translated at 100.0% (489 of 489 strings)

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

Translated using Weblate (German)

Currently translated at 100.0% (489 of 489 strings)

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

Translated using Weblate (German)

Currently translated at 99.5% (211 of 212 strings)

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

Merge branch 'origin/develop' into Weblate.

Translated using Weblate (Spanish (Latin America))

Currently translated at 90.6% (621 of 685 strings)

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

Translated using Weblate (Spanish (Latin America))

Currently translated at 100.0% (67 of 67 strings)

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

Translated using Weblate (Spanish (Latin America))

Currently translated at 100.0% (134 of 134 strings)

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

Translated using Weblate (Polish)

Currently translated at 100.0% (174 of 174 strings)

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

Translated using Weblate (Polish)

Currently translated at 100.0% (356 of 356 strings)

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

Translated using Weblate (Polish)

Currently translated at 100.0% (508 of 508 strings)

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

Translated using Weblate (Finnish)

Currently translated at 9.5% (14 of 147 strings)

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

Translated using Weblate (Finnish)

Currently translated at 0.3% (1 of 328 strings)

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

Translated using Weblate (Finnish)

Currently translated at 99.1% (228 of 230 strings)

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

Translated using Weblate (Finnish)

Currently translated at 81.8% (416 of 508 strings)

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

Translated using Weblate (Finnish)

Currently translated at 92.0% (127 of 138 strings)

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

Translated using Weblate (Finnish)

Currently translated at 64.6% (42 of 65 strings)

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

Translated using Weblate (Finnish)

Currently translated at 85.4% (1744 of 2041 strings)

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

Translated using Weblate (Finnish)

Currently translated at 98.5% (208 of 211 strings)

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

Translated using Weblate (Spanish (Latin America))

Currently translated at 85.4% (585 of 685 strings)

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

Translated using Weblate (Spanish (Latin America))

Currently translated at 100.0% (67 of 67 strings)

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

Translated using Weblate (Spanish (Latin America))

Currently translated at 100.0% (31 of 31 strings)

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

Translated using Weblate (Spanish (Latin America))

Currently translated at 100.0% (27 of 27 strings)

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

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 (Simplified))

Currently translated at 100.0% (233 of 233 strings)

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

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/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (147 of 147 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% (171 of 171 strings)

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

Translated using Weblate (Spanish (Latin America))

Currently translated at 100.0% (8 of 8 strings)

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

Translated using Weblate (Spanish (Latin America))

Currently translated at 99.1% (228 of 230 strings)

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

Translated using Weblate (Dutch)

Currently translated at 100.0% (67 of 67 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (31 of 31 strings)

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

Translated using Weblate (English (Pirate))

Currently translated at 91.3% (159 of 174 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (485 of 485 strings)

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

Translated using Weblate (English (Pirate))

Currently translated at 100.0% (485 of 485 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (2041 of 2041 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (298 of 298 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% (328 of 328 strings)

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

Translated using Weblate (Dutch)

Currently translated at 99.6% (327 of 328 strings)

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

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/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (685 of 685 strings)

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

Translated using Weblate (Dutch)

Currently translated at 99.7% (355 of 356 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (230 of 230 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (230 of 230 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% (65 of 65 strings)

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

Translated using Weblate (Dutch)

Currently translated at 100.0% (211 of 211 strings)

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

Translated using Weblate (Finnish)

Currently translated at 85.4% (1744 of 2041 strings)

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

Translated using Weblate (Spanish (Latin America))

Currently translated at 85.2% (584 of 685 strings)

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

Translated using Weblate (Spanish (Latin America))

Currently translated at 85.2% (584 of 685 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/es_419/
2020-02-27 22:04:41 +01:00
Sabe Jones
1bb337d235 4.134.4 2020-02-27 15:00:52 -06:00
Sabe Jones
07d6969764 Merge branch 'develop' into release 2020-02-27 15:00:46 -06:00
Sabe Jones
5807db9053 chore(news): Last Chance Bailey 2020-02-27 15:00:33 -06:00
Matteo Pagliazzi
a5a91a3a9c 4.134.3 2020-02-27 14:38:26 +01:00
Matteo Pagliazzi
3650426edc fix(task): hotfix for when task.attribute is sent as null 2020-02-27 14:25:26 +01:00
Matteo Pagliazzi
6543a43854 wip test 2020-02-27 12:16:53 +01:00
Matteo Pagliazzi
a046930097 Merge branch 'develop' into stackdriver-winston 2020-02-26 18:40:25 +01:00
Alys
7579bec587 allow another guild to use banned words in appropriate contexts
This commit also puts the list of guilds into alphabetical order.
2020-02-26 07:45:31 +10:00
Alys
c1e7fed4d4 move a word from slurs to swears as discussed with beffymaroo and mods 2020-02-26 07:44:36 +10:00
agentx999
bad148148c Enchanted Armoire immediately updates XP stat in header (fixes #11827) (#11884)
* sync user if Armoire gives XP

* user can level up from Armoire

* remove XP amount from Armoire XP notification
2020-02-24 22:19:48 +01:00
Matteo Pagliazzi
0280513a00 improvements to apidocs comments (#11832)
* make corrections and improvements to apidocs (no code changes)

* make further minor tweaks to apidocs that were previously changed

* make one extra small change for consistency

* fix lines that are too long

Each line was fixed by one of these:
- changing the wording
- breaking into separate lines
- adding eslint-disable-line max-len (necessary for `@api ` lines because
a line break there causes the first part of the text to not be displayed
on the apidocs website)

* apply eslint-disable max-len around block comments that need to have a long line

The `@api ` lines can't have a line break in them because it would
cause the first part of the text to not be displayed on the apidocs
website.

Using `// eslint-disable-line max-len` at the end of an `@api `
line doesn't work, possibly because it's nesting a comment inside
a multi-line comment.

The only way I've found to ignore the `max-len` rule is to put
disable and enable comments around the whole comment block.
2020-02-24 21:22:29 +01:00
Sabe Jones
e502588abc Improve G1G1 process (#11792)
* WIP(g1g1): notif

* WIP(g1g1): notif cont'd

* WIP(gifting): partial modal implementation

* feat(gifting): select giftee modal

* fix(gifting): notification order, modal dismiss

* fix(modals): correct some repops

* fix(gifting): style updates

* fix(modals): new dismiss logic

* fix(modals): new dismiss no go??

* refactor(close): catch up with dismiss functionality

* refactor(g1g1): optimizations
2020-02-24 16:54:56 +01:00
Matteo Pagliazzi
5718d8396d build(deps): bump svg-inline-loader in /website/client (#11891)
Bumps [svg-inline-loader](https://github.com/sairion/svg-inline-loader) from 0.8.0 to 0.8.2.
- [Release notes](https://github.com/sairion/svg-inline-loader/releases)
- [Changelog](https://github.com/webpack-contrib/svg-inline-loader/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sairion/svg-inline-loader/compare/v0.8.0...v0.8.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-24 14:29:55 +01:00
dependabot-preview[bot]
b59a63ecbe build(deps): bump bootstrap-vue from 2.4.2 to 2.5.0 in /website/client (#11893)
Bumps [bootstrap-vue](https://github.com/bootstrap-vue/bootstrap-vue) from 2.4.2 to 2.5.0.
- [Release notes](https://github.com/bootstrap-vue/bootstrap-vue/releases)
- [Changelog](https://github.com/bootstrap-vue/bootstrap-vue/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/bootstrap-vue/bootstrap-vue/compare/v2.4.2...v2.5.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-24 14:29:39 +01:00
dependabot-preview[bot]
f0465aab5e build(deps): bump inspectpack from 4.3.1 to 4.4.0 in /website/client (#11892)
Bumps [inspectpack](https://github.com/FormidableLabs/inspectpack) from 4.3.1 to 4.4.0.
- [Release notes](https://github.com/FormidableLabs/inspectpack/releases)
- [Changelog](https://github.com/FormidableLabs/inspectpack/blob/master/HISTORY.md)
- [Commits](https://github.com/FormidableLabs/inspectpack/compare/v4.3.1...v4.4.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-24 14:29:29 +01:00
dependabot-preview[bot]
39ee78127c build(deps): bump eslint-plugin-vue in /website/client (#11894)
Bumps [eslint-plugin-vue](https://github.com/vuejs/eslint-plugin-vue) from 6.2.0 to 6.2.1.
- [Release notes](https://github.com/vuejs/eslint-plugin-vue/releases)
- [Commits](https://github.com/vuejs/eslint-plugin-vue/compare/v6.2.0...v6.2.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-24 14:29:04 +01:00
Matteo Pagliazzi
4658025f3f build(deps-dev): bump sinon-chai from 3.4.0 to 3.5.0 (#11895)
Bumps [sinon-chai](https://github.com/domenic/sinon-chai) from 3.4.0 to 3.5.0.
- [Release notes](https://github.com/domenic/sinon-chai/releases)
- [Changelog](https://github.com/domenic/sinon-chai/blob/master/CHANGELOG.md)
- [Commits](https://github.com/domenic/sinon-chai/compare/3.4.0...3.5.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-24 14:28:53 +01:00
dependabot-preview[bot]
46417b4124 build(deps): bump superagent from 5.2.1 to 5.2.2 (#11896)
Bumps [superagent](https://github.com/visionmedia/superagent) from 5.2.1 to 5.2.2.
- [Release notes](https://github.com/visionmedia/superagent/releases)
- [Changelog](https://github.com/visionmedia/superagent/blob/master/HISTORY.md)
- [Commits](https://github.com/visionmedia/superagent/compare/v5.2.1...v5.2.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-24 14:28:37 +01:00
dependabot-preview[bot]
706a7b441a build(deps): bump aws-sdk from 2.619.0 to 2.624.0 (#11897)
Bumps [aws-sdk](https://github.com/aws/aws-sdk-js) from 2.619.0 to 2.624.0.
- [Release notes](https://github.com/aws/aws-sdk-js/releases)
- [Changelog](https://github.com/aws/aws-sdk-js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-js/compare/v2.619.0...v2.624.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-24 14:28:26 +01:00
dependabot-preview[bot]
a8baa8fcfe build(deps): bump mongoose from 5.8.11 to 5.9.2 (#11901)
Bumps [mongoose](https://github.com/Automattic/mongoose) from 5.8.11 to 5.9.2.
- [Release notes](https://github.com/Automattic/mongoose/releases)
- [Changelog](https://github.com/Automattic/mongoose/blob/master/History.md)
- [Commits](https://github.com/Automattic/mongoose/compare/5.8.11...5.9.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-24 14:28:14 +01:00
dependabot-preview[bot]
368cf91e32 build(deps-dev): bump sinon-chai from 3.4.0 to 3.5.0
Bumps [sinon-chai](https://github.com/domenic/sinon-chai) from 3.4.0 to 3.5.0.
- [Release notes](https://github.com/domenic/sinon-chai/releases)
- [Changelog](https://github.com/domenic/sinon-chai/blob/master/CHANGELOG.md)
- [Commits](https://github.com/domenic/sinon-chai/compare/3.4.0...3.5.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-24 08:12:17 +00:00
dependabot-preview[bot]
23fc969432 build(deps): bump svg-inline-loader in /website/client
Bumps [svg-inline-loader](https://github.com/sairion/svg-inline-loader) from 0.8.0 to 0.8.2.
- [Release notes](https://github.com/sairion/svg-inline-loader/releases)
- [Changelog](https://github.com/webpack-contrib/svg-inline-loader/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sairion/svg-inline-loader/compare/v0.8.0...v0.8.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-24 08:08:33 +00:00
Sabe Jones
5db606dcfd fix(event): end Valentine's NPCs 2020-02-20 14:26:25 -06:00
Matteo Pagliazzi
6a5e1dda0e fixes 2020-02-20 20:58:42 +01:00
Matteo Pagliazzi
70326e5b5b upgrade loggly transport 2020-02-20 20:54:32 +01:00
Matteo Pagliazzi
c91c152b53 fix error messages in console 2020-02-20 20:51:16 +01:00
Sabe Jones
a7fd8f7f52 4.134.2 2020-02-20 13:26:49 -06:00
Phillip Thelen
0b57c0a22d Unify behaviour for shops (#11829)
* Change price for basilist and dustbunnies

* return correct unlockCondition for moon quests

* Fix basilist not being buyable
2020-02-20 13:24:43 -06:00
Matteo Pagliazzi
362313fe0a fix info messages 2020-02-20 20:05:58 +01:00
Matteo Pagliazzi
ed5dfd0228 start upgrading winston 2020-02-20 19:37:31 +01:00
Sabe Jones
12afdc1681 4.134.1 2020-02-20 11:59:03 -06:00
Sabe Jones
5e31278d2a chore(news): Bailey 2020-02-20 11:57:56 -06:00
Alys
0891908cba Merge remote-tracking branch 'upstream/develop' into apidocs-comment-fixes 2020-02-20 09:47:44 +10:00
Ian McKenzie
6a483edfe1 Resolves #11861 — Makes "quest already started" error descriptive (#11862)
* Resolves #11861

* Fix unit tests for translation changes

* Remove non-en quest.json locales
2020-02-19 16:07:17 +01:00
Melior
962f2b7579 Translated using Weblate (Vietnamese)
Currently translated at 34.1% (112 of 328 strings)

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

Translated using Weblate (Malay)

Currently translated at 81.1% (412 of 508 strings)

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

Translated using Weblate (Filipino)

Currently translated at 92.7% (635 of 685 strings)

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

Translated using Weblate (Catalan)

Currently translated at 100.0% (126 of 126 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (233 of 233 strings)

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

Translated using Weblate (French)

Currently translated at 100.0% (233 of 233 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (147 of 147 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (171 of 171 strings)

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

Translated using Weblate (Russian)

Currently translated at 100.0% (174 of 174 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (2041 of 2041 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (2041 of 2041 strings)

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

Translated using Weblate (Dutch)

Currently translated at 88.9% (1815 of 2041 strings)

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

Translated using Weblate (Dutch)

Currently translated at 68.2% (43 of 63 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (685 of 685 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (685 of 685 strings)

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

Translated using Weblate (Russian)

Currently translated at 99.5% (682 of 685 strings)

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

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (685 of 685 strings)

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

Translated using Weblate (French)

Currently translated at 100.0% (685 of 685 strings)

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

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (685 of 685 strings)

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

Translated using Weblate (German)

Currently translated at 100.0% (685 of 685 strings)

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

Translated using Weblate (German)

Currently translated at 100.0% (685 of 685 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (356 of 356 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% (356 of 356 strings)

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

Translated using Weblate (Russian)

Currently translated at 100.0% (356 of 356 strings)

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

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (356 of 356 strings)

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

Translated using Weblate (Japanese)

Currently translated at 100.0% (356 of 356 strings)

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

Translated using Weblate (French)

Currently translated at 100.0% (356 of 356 strings)

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

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (356 of 356 strings)

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

Translated using Weblate (German)

Currently translated at 100.0% (356 of 356 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (508 of 508 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (508 of 508 strings)

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

Translated using Weblate (Russian)

Currently translated at 99.2% (504 of 508 strings)

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

Translated using Weblate (Dutch)

Currently translated at 93.3% (474 of 508 strings)

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

Translated using Weblate (Dutch)

Currently translated at 56.9% (37 of 65 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/nl/
2020-02-18 21:18:48 +01:00
Sabe Jones
f413073d35 Merge branch 'release' into develop 2020-02-18 14:15:21 -06:00
Sabe Jones
0df2da6bf4 4.134.0 2020-02-18 14:14:59 -06:00
Matteo Pagliazzi
27b9ffb3f2 fix lint in challengeModal 2020-02-18 17:26:14 +01:00
Alejandro Aristizábal
79597cc72b Challenge exception-handling / clientside prize validation (#11769)
* fix: added client-side validation for challenge prizes

This commit aims to solve the issue #11765 by adding client-side 
validation for the challenge prize. This way, a user is unable to create 
a challenge if the prize is higher than what they can afford. Also, the 
loading property is reset to false after fetching the challenge, however 
this won't work if the request isn't successful.

* style: make validation conditional clearer

* fix: add exception handling when doing server requests.

This commit adds a basic try/catch block for handling server-side 
errors, and successfully enables the submit button if something failed. 
This may also fix #11545, in which a server-side error, difficult to 
valide from the client, was causing the submit button to stay disabled 
until reload.

* fix: reenable prize validation

* fix: bad indentation

* fix: Enable submit button on input change

* fix: add throttling to enableSubmit event.

* fix: reenable prize client-side validation.
2020-02-18 17:06:42 +01:00
Tutti Quintella
353009821f [Fix #11824] Show member Display Name if Username is blank (#11826)
* #11824 memberSearchDropdown: use member.profile.name if username is blank

* membwer.auth.local object could be empty
2020-02-18 17:00:30 +01:00
MynahMarie
b9a3ee7f30 remove unecessary checks for addlNotes in getItemInfo.js 2020-02-18 12:42:59 +02:00
MynahMarie
ea3938a91e call t on eventAvailabitily and intergrate change from develop branch 2020-02-18 11:45:57 +02:00
MynahMarie
fdfbade493 fix merge conflict 2020-02-18 11:06:50 +02:00
Sabe Jones
69179c61b1 feat(content): Cotton Candy Pink Prizes 2020-02-17 11:37:37 -06:00
artur-borys
c6f6722af7 Fix menu not closing after clicking on menu item (#11866) 2020-02-17 16:37:13 +01:00
Arun Sojan Parolikkal
b362b36e16 fix for three dots menu getting covered up by footer issue: #11227 (#11857) 2020-02-17 15:56:33 +01:00
Matteo Pagliazzi
f40bb9e91d Merge pull request #11798 from tthorpe88/11768
Show "no owner" when challenge leader cannot be found fixes #11768
2020-02-17 15:52:24 +01:00
Matteo Pagliazzi
bba068efd5 Merge pull request #11867 from artur-borys/drawer-remove-extra-padding
Remove drawer padding adjustment, fixes #11863
2020-02-17 15:27:20 +01:00
Matteo Pagliazzi
c89b20ce42 Merge pull request #11856 from neepsnikeep/neepsnikeep/issue_11790_inconsistent_user_count
Update user count and write text consistently. fixes #11790
2020-02-17 15:01:01 +01:00
Matteo Pagliazzi
a60022e54d Merge pull request #11859 from citrusella/apidocfixes
Fixing some typos, etc. in the API doc
2020-02-17 14:50:24 +01:00
Matteo Pagliazzi
1d72b0e4a2 Merge pull request #11880 from HabitRPG/dependabot/npm_and_yarn/website/client/storybook/addon-knobs-5.3.13
build(deps): bump @storybook/addon-knobs from 5.3.12 to 5.3.13 in /website/client
2020-02-17 14:36:04 +01:00
Matteo Pagliazzi
15f4ce77ac Merge pull request #11882 from HabitRPG/dependabot/npm_and_yarn/website/client/storybook/addon-notes-5.3.13
build(deps): bump @storybook/addon-notes from 5.3.12 to 5.3.13 in /website/client
2020-02-17 14:35:54 +01:00
dependabot-preview[bot]
05093c5552 build(deps): bump @storybook/addon-notes in /website/client
Bumps [@storybook/addon-notes](https://github.com/storybookjs/storybook/tree/HEAD/addons/notes) from 5.3.12 to 5.3.13.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/v5.3.13/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v5.3.13/addons/notes)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-17 13:27:54 +00:00
dependabot-preview[bot]
ee733c644d build(deps): bump @storybook/addon-knobs in /website/client
Bumps [@storybook/addon-knobs](https://github.com/storybookjs/storybook/tree/HEAD/addons/knobs) from 5.3.12 to 5.3.13.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v5.3.13/addons/knobs)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-17 13:27:51 +00:00
Matteo Pagliazzi
cb861d266d Merge pull request #11881 from HabitRPG/dependabot/npm_and_yarn/website/client/bootstrap-vue-2.4.2
build(deps): bump bootstrap-vue from 2.4.0 to 2.4.2 in /website/client
2020-02-17 13:06:56 +01:00
Matteo Pagliazzi
c7b0269fda Merge pull request #11877 from HabitRPG/dependabot/npm_and_yarn/website/client/storybook/vue-5.3.13
build(deps): bump @storybook/vue from 5.3.12 to 5.3.13 in /website/client
2020-02-17 13:06:48 +01:00
Matteo Pagliazzi
bd5ef97f22 build(deps): bump @storybook/addon-actions in /website/client (#11879)
Bumps [@storybook/addon-actions](https://github.com/storybookjs/storybook/tree/HEAD/addons/actions) from 5.3.12 to 5.3.13.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v5.3.13/addons/actions)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-17 13:06:11 +01:00
dependabot-preview[bot]
2e76d06f5e build(deps): bump eslint-plugin-vue in /website/client (#11878)
Bumps [eslint-plugin-vue](https://github.com/vuejs/eslint-plugin-vue) from 6.1.2 to 6.2.0.
- [Release notes](https://github.com/vuejs/eslint-plugin-vue/releases)
- [Commits](https://github.com/vuejs/eslint-plugin-vue/compare/v6.1.2...v6.2.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-17 13:05:56 +01:00
dependabot-preview[bot]
b5353717c8 build(deps): bump @storybook/addon-links in /website/client (#11876)
Bumps [@storybook/addon-links](https://github.com/storybookjs/storybook/tree/HEAD/addons/links) from 5.3.12 to 5.3.13.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v5.3.13/addons/links)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-17 13:05:46 +01:00
dependabot-preview[bot]
52545018b6 build(deps): bump webpack from 4.41.5 to 4.41.6 in /website/client (#11874)
Bumps [webpack](https://github.com/webpack/webpack) from 4.41.5 to 4.41.6.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v4.41.5...v4.41.6)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-17 13:02:35 +01:00
dependabot-preview[bot]
d82aa869b2 build(deps): bump aws-sdk from 2.615.0 to 2.619.0 (#11871)
Bumps [aws-sdk](https://github.com/aws/aws-sdk-js) from 2.615.0 to 2.619.0.
- [Release notes](https://github.com/aws/aws-sdk-js/releases)
- [Changelog](https://github.com/aws/aws-sdk-js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-js/compare/v2.615.0...v2.619.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-17 13:02:16 +01:00
dependabot-preview[bot]
107d633d37 build(deps): bump bootstrap-vue from 2.4.0 to 2.4.2 in /website/client
Bumps [bootstrap-vue](https://github.com/bootstrap-vue/bootstrap-vue) from 2.4.0 to 2.4.2.
- [Release notes](https://github.com/bootstrap-vue/bootstrap-vue/releases)
- [Changelog](https://github.com/bootstrap-vue/bootstrap-vue/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/bootstrap-vue/bootstrap-vue/compare/v2.4.0...v2.4.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-17 08:16:13 +00:00
dependabot-preview[bot]
4f41a8c519 build(deps): bump @storybook/addon-actions in /website/client
Bumps [@storybook/addon-actions](https://github.com/storybookjs/storybook/tree/HEAD/addons/actions) from 5.3.12 to 5.3.13.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v5.3.13/addons/actions)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-17 08:14:05 +00:00
dependabot-preview[bot]
72f0e7ffae build(deps): bump @storybook/vue in /website/client
Bumps [@storybook/vue](https://github.com/storybookjs/storybook/tree/HEAD/app/vue) from 5.3.12 to 5.3.13.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v5.3.13/app/vue)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-17 08:11:41 +00:00
Artur Boryś
30e5fad6b7 Remove drawer padding adjustment
Removed method adjusting page padding that assured that the
drawer didn't overlap any conent.
It's unneccesary now, because of footer.
2020-02-15 14:24:11 +01:00
citrusella
d3d7ad2693 Add missing quote in values allowed on gem item 2020-02-14 21:37:21 -05:00
Sabe Jones
0e590c3623 Merge branch 'release' into develop 2020-02-13 16:44:49 -06:00
Sabe Jones
6e0739c996 4.133.1 2020-02-13 16:44:03 -06:00
Sabe Jones
588fd43e65 fix(content): correct Ruby title 2020-02-13 16:43:47 -06:00
Sabe Jones
9a6f8021e3 Subscription Page Overhaul (#11823)
* WIP(settings): subscriber page improvements

* WIP(subscriptions): more design build-out

* fix(css): disabled button styles

* fix(css): better Amazon targeting

* WIP(g1g1): notif

* WIP(g1g1): notif cont'd

* WIP(gifting): partial modal implementation

* feat(gifting): select giftee modal

* fix(gifting): notification order, modal dismiss

* fix(modals): correct some repops

* fix(gifting): style updates

* fix(modals): also clean out "prev"

* refactor(modals): hide in dismiss event

* fix(modals): new dismiss logic

* fix(modals): new dismiss no go??

* WIP(subscription): unsubscribed state

* WIP(subscription): partial subscribed

* WIP(subscription): finish subscribed

* feat(subscription): revised sub page RC

* fix(subs): style tweaks

* fix(subs): moar style tweaks
2020-02-13 13:12:45 -06:00
Melior
bac84f6ce0 Merge branch 'origin/develop' into Weblate. 2020-02-13 19:49:43 +01:00
Melior
98c9f83001 Translated using Weblate (Catalan)
Currently translated at 100.0% (126 of 126 strings)

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

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (174 of 174 strings)

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

Translated using Weblate (Catalan)

Currently translated at 100.0% (230 of 230 strings)

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

Translated using Weblate (Vietnamese)

Currently translated at 26.2% (86 of 328 strings)

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

Translated using Weblate (Catalan)

Currently translated at 97.8% (225 of 230 strings)

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

Translated using Weblate (Catalan)

Currently translated at 100.0% (134 of 134 strings)

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

Translated using Weblate (Catalan)

Currently translated at 95.8% (487 of 508 strings)

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

Translated using Weblate (Catalan)

Currently translated at 64.6% (42 of 65 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (174 of 174 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (174 of 174 strings)

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

Translated using Weblate (French)

Currently translated at 100.0% (174 of 174 strings)

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

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (174 of 174 strings)

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

Translated using Weblate (German)

Currently translated at 100.0% (174 of 174 strings)

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

Translated using Weblate (German)

Currently translated at 100.0% (2041 of 2041 strings)

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

Translated using Weblate (Turkish)

Currently translated at 52.3% (33 of 63 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (134 of 134 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (134 of 134 strings)

Translation: Habitica/Challenge
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/zh_Hans/
2020-02-13 19:48:58 +01:00
Sabe Jones
427d2127cb 4.133.0 2020-02-13 12:43:43 -06:00
Sabe Jones
c11a384a35 fix(news): link 2020-02-13 12:42:58 -06:00
Sabe Jones
36481b87fa fix(content): missing string 2020-02-12 18:37:03 -06:00
Sabe Jones
b8362af2f2 fix(content): missing potion data 2020-02-12 18:30:54 -06:00
citrusella
80de90cc5f Attempt to fix typos in the API doc 2020-02-12 15:40:44 -05:00
Sabe Jones
142d7e4348 chore(sprites): compile 2020-02-12 14:16:18 -06:00
Katha
181552c8d1 Update user count, it's currently 4,671,530 according to Alys. So the million count goes up to 4 and the texts mentioning the number of users is supposed to display this count. There have been two texts and the count is only in one of them with the other hardcoded. Seems like a good thing to not actually calculate the number of users for performance reasons. resolves #11790 2020-02-12 17:59:32 +01:00
Sabe Jones
6324ef72df feat(content): Magic Hatching Quest 2020-02-11 16:09:51 -06:00
Melior
3719efa874 Merge branch 'origin/develop' into Weblate. 2020-02-11 21:34:13 +01:00
Sabe Jones
107444043e Merge branch 'release' into develop 2020-02-11 14:33:25 -06:00
Sabe Jones
e6ba1ccca7 4.132.3 2020-02-11 14:30:49 -06:00
Sabe Jones
8edd2cfd14 Merge branch 'sabrecat/valentines-2020' into release 2020-02-11 14:30:27 -06:00
Sabe Jones
897b192852 fix(profiles): short circuit contributor
Attempted fix for #11830
2020-02-11 14:30:19 -06:00
Phillip Thelen
0648f5d412 Prevent server from cancelling still active subs (#11795)
* Prevent server from cancelling still active subs

* Allow subs to be cancelled before end date

* fix test

* fix test
2020-02-11 12:58:11 -06:00
dependabot-preview[bot]
732426c176 build(deps): bump @vue/cli-plugin-babel in /website/client (#11851)
Bumps [@vue/cli-plugin-babel](https://github.com/vuejs/vue-cli/tree/HEAD/packages/@vue/cli-plugin-babel) from 4.1.2 to 4.2.2.
- [Release notes](https://github.com/vuejs/vue-cli/releases)
- [Changelog](https://github.com/vuejs/vue-cli/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/vuejs/vue-cli/commits/v4.2.2/packages/@vue/cli-plugin-babel)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-11 17:34:59 +01:00
dependabot-preview[bot]
4df8022811 build(deps): bump @vue/cli-service in /website/client (#11850)
Bumps [@vue/cli-service](https://github.com/vuejs/vue-cli/tree/HEAD/packages/@vue/cli-service) from 4.1.2 to 4.2.2.
- [Release notes](https://github.com/vuejs/vue-cli/releases)
- [Changelog](https://github.com/vuejs/vue-cli/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/vuejs/vue-cli/commits/v4.2.2/packages/@vue/cli-service)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-11 17:32:13 +01:00
dependabot-preview[bot]
b153c6d054 build(deps): bump @vue/cli-plugin-router in /website/client (#11836)
Bumps [@vue/cli-plugin-router](https://github.com/vuejs/vue-cli/tree/HEAD/packages/@vue/cli-plugin-router) from 4.1.2 to 4.2.2.
- [Release notes](https://github.com/vuejs/vue-cli/releases)
- [Changelog](https://github.com/vuejs/vue-cli/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/vuejs/vue-cli/commits/v4.2.2/packages/@vue/cli-plugin-router)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-11 17:32:03 +01:00
dependabot-preview[bot]
c0e1a31937 build(deps): bump @storybook/addon-notes in /website/client (#11841)
Bumps [@storybook/addon-notes](https://github.com/storybookjs/storybook/tree/HEAD/addons/notes) from 5.3.10 to 5.3.12.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/v5.3.12/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v5.3.12/addons/notes)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-11 17:30:46 +01:00
dependabot-preview[bot]
7a13d061d7 build(deps): bump aws-sdk from 2.610.0 to 2.615.0 (#11854)
Bumps [aws-sdk](https://github.com/aws/aws-sdk-js) from 2.610.0 to 2.615.0.
- [Release notes](https://github.com/aws/aws-sdk-js/releases)
- [Changelog](https://github.com/aws/aws-sdk-js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-js/compare/v2.610.0...v2.615.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-11 17:27:46 +01:00
dependabot-preview[bot]
ac29d662ef build(deps): bump @storybook/addon-links in /website/client (#11846)
Bumps [@storybook/addon-links](https://github.com/storybookjs/storybook/tree/HEAD/addons/links) from 5.3.10 to 5.3.12.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v5.3.12/addons/links)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-11 17:27:25 +01:00
dependabot-preview[bot]
247246b99d build(deps): bump @storybook/addon-actions in /website/client (#11837)
Bumps [@storybook/addon-actions](https://github.com/storybookjs/storybook/tree/HEAD/addons/actions) from 5.3.10 to 5.3.12.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v5.3.12/addons/actions)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-11 17:27:14 +01:00
dependabot-preview[bot]
13fa1924ae build(deps): bump amplitude-js from 5.8.0 to 5.9.0 in /website/client (#11838)
Bumps [amplitude-js](https://github.com/amplitude/amplitude-javascript) from 5.8.0 to 5.9.0.
- [Release notes](https://github.com/amplitude/amplitude-javascript/releases)
- [Changelog](https://github.com/amplitude/Amplitude-JavaScript/blob/master/CHANGELOG.md)
- [Commits](https://github.com/amplitude/amplitude-javascript/compare/v5.8.0...v5.9.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-11 17:25:56 +01:00
dependabot-preview[bot]
d55400cc80 build(deps): bump @vue/cli-plugin-eslint in /website/client (#11839)
Bumps [@vue/cli-plugin-eslint](https://github.com/vuejs/vue-cli/tree/HEAD/packages/@vue/cli-plugin-eslint) from 4.1.2 to 4.2.2.
- [Release notes](https://github.com/vuejs/vue-cli/releases)
- [Changelog](https://github.com/vuejs/vue-cli/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/vuejs/vue-cli/commits/v4.2.2/packages/@vue/cli-plugin-eslint)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-11 17:25:44 +01:00
dependabot-preview[bot]
100c7c4395 build(deps): bump rimraf from 3.0.1 to 3.0.2 (#11840)
Bumps [rimraf](https://github.com/isaacs/rimraf) from 3.0.1 to 3.0.2.
- [Release notes](https://github.com/isaacs/rimraf/releases)
- [Changelog](https://github.com/isaacs/rimraf/blob/master/CHANGELOG.md)
- [Commits](https://github.com/isaacs/rimraf/compare/v3.0.1...v3.0.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-11 17:25:25 +01:00
dependabot-preview[bot]
53510e3ea7 build(deps): bump @storybook/vue in /website/client (#11843)
Bumps [@storybook/vue](https://github.com/storybookjs/storybook/tree/HEAD/app/vue) from 5.3.10 to 5.3.12.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v5.3.12/app/vue)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-11 17:25:08 +01:00
dependabot-preview[bot]
c643f6a16c build(deps): bump bcrypt from 3.0.7 to 3.0.8 (#11847)
Bumps [bcrypt](https://github.com/kelektiv/node.bcrypt.js) from 3.0.7 to 3.0.8.
- [Release notes](https://github.com/kelektiv/node.bcrypt.js/releases)
- [Changelog](https://github.com/kelektiv/node.bcrypt.js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/kelektiv/node.bcrypt.js/compare/v3.0.7...v3.0.8)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-11 17:24:45 +01:00
dependabot-preview[bot]
1c4a941c88 build(deps): bump @storybook/addon-knobs in /website/client (#11849)
Bumps [@storybook/addon-knobs](https://github.com/storybookjs/storybook/tree/HEAD/addons/knobs) from 5.3.10 to 5.3.12.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v5.3.12/addons/knobs)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-11 17:24:13 +01:00
dependabot-preview[bot]
7c0da8051f build(deps): bump @vue/cli-plugin-unit-mocha in /website/client (#11835)
Bumps [@vue/cli-plugin-unit-mocha](https://github.com/vuejs/vue-cli/tree/HEAD/packages/@vue/cli-plugin-unit-mocha) from 4.1.2 to 4.2.2.
- [Release notes](https://github.com/vuejs/vue-cli/releases)
- [Changelog](https://github.com/vuejs/vue-cli/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/vuejs/vue-cli/commits/v4.2.2/packages/@vue/cli-plugin-unit-mocha)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-11 17:23:56 +01:00
Melior
6c70076c30 Translated using Weblate (Malay)
Currently translated at 80.9% (411 of 508 strings)

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

Translated using Weblate (German)

Currently translated at 100.0% (2041 of 2041 strings)

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

Translated using Weblate (Vietnamese)

Currently translated at 24.6% (81 of 328 strings)

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

Translated using Weblate (Vietnamese)

Currently translated at 100.0% (4 of 4 strings)

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

Translated using Weblate (Malay)

Currently translated at 80.7% (410 of 508 strings)

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

Translated using Weblate (Latin)

Currently translated at 87.4% (444 of 508 strings)

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

Translated using Weblate (Latin)

Currently translated at 100.0% (65 of 65 strings)

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

Translated using Weblate (Swedish)

Currently translated at 95.9% (141 of 147 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (171 of 171 strings)

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

Translated using Weblate (Spanish (Latin America))

Currently translated at 100.0% (508 of 508 strings)

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

Translated using Weblate (Swedish)

Currently translated at 89.8% (1834 of 2041 strings)

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

Translated using Weblate (German)

Currently translated at 100.0% (508 of 508 strings)

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

Translated using Weblate (Swedish)

Currently translated at 100.0% (65 of 65 strings)

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

Translated using Weblate (Malay)

Currently translated at 27.2% (40 of 147 strings)

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

Translated using Weblate (Malay)

Currently translated at 97.0% (166 of 171 strings)

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

Translated using Weblate (Malay)

Currently translated at 56.9% (37 of 65 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/ms/
2020-02-11 11:11:39 +01:00
Alys
15976e906a apply eslint-disable max-len around block comments that need to have a long line
The `@api ` lines can't have a line break in them because it would
cause the first part of the text to not be displayed on the apidocs
website.

Using `// eslint-disable-line max-len` at the end of an `@api `
line doesn't work, possibly because it's nesting a comment inside
a multi-line comment.

The only way I've found to ignore the `max-len` rule is to put
disable and enable comments around the whole comment block.
2020-02-08 16:06:00 +10:00
Alys
ac52da5be2 fix lines that are too long
Each line was fixed by one of these:
- changing the wording
- breaking into separate lines
- adding eslint-disable-line max-len (necessary for `@api ` lines because
a line break there causes the first part of the text to not be displayed
on the apidocs website)
2020-02-08 14:55:21 +10:00
Alys
1b39338eec make one extra small change for consistency 2020-02-08 14:30:48 +10:00
Alys
6fe87a8140 make further minor tweaks to apidocs that were previously changed 2020-02-08 14:26:01 +10:00
Alys
c5d0ff63a5 make corrections and improvements to apidocs (no code changes) 2020-02-08 14:12:20 +10:00
Sabe Jones
6f7243c049 feat(event): Valentine's 2020 2020-02-07 14:16:25 -06:00
Melior
71cc313c9a Merge branch 'origin/develop' into Weblate. 2020-02-06 22:17:35 +01:00
Melior
788992b8fa Translated using Weblate (Malay)
Currently translated at 32.3% (21 of 65 strings)

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

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% (233 of 233 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (138 of 138 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (28 of 28 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (171 of 171 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (171 of 171 strings)

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

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/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (174 of 174 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (485 of 485 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (2041 of 2041 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (2041 of 2041 strings)

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

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (2041 of 2041 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (328 of 328 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (328 of 328 strings)

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

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/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (677 of 677 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (677 of 677 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% (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 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% (230 of 230 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% (134 of 134 strings)

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

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (508 of 508 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (211 of 211 strings)

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

Translated using Weblate (Malay)

Currently translated at 7.4% (11 of 147 strings)

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

Translated using Weblate (Malay)

Currently translated at 0.9% (3 of 328 strings)

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

Translated using Weblate (Malay)

Currently translated at 15.3% (10 of 65 strings)

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

Translated using Weblate (Polish)

Currently translated at 100.0% (233 of 233 strings)

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

Translated using Weblate (Spanish (Latin America))

Currently translated at 99.3% (296 of 298 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (67 of 67 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (2041 of 2041 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (2041 of 2041 strings)

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

Translated using Weblate (Swedish)

Currently translated at 89.9% (1836 of 2041 strings)

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

Translated using Weblate (French)

Currently translated at 100.0% (2041 of 2041 strings)

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

Translated using Weblate (Spanish)

Currently translated at 93.4% (1908 of 2041 strings)

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

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (2041 of 2041 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (677 of 677 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (355 of 355 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% (355 of 355 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (230 of 230 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (508 of 508 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (508 of 508 strings)

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

Translated using Weblate (Swedish)

Currently translated at 100.0% (508 of 508 strings)

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

Translated using Weblate (French)

Currently translated at 100.0% (508 of 508 strings)

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

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (508 of 508 strings)

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

Translated using Weblate (German)

Currently translated at 99.8% (507 of 508 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/de/
2020-02-06 22:17:18 +01:00
Sabe Jones
ff87a346d6 4.132.2 2020-02-06 15:14:53 -06:00
Sabe Jones
99a9bfe62e chore(news): Bailey 2020-02-06 15:13:55 -06:00
Sabe Jones
4f10f534ee Merge branch 'release' into develop 2020-02-05 05:32:18 -06:00
Sabe Jones
2053e6cc40 4.132.1 2020-02-05 05:31:53 -06:00
Sabe Jones
6a2e84e7cc fix(sprites): new spritesheet 2020-02-05 05:31:20 -06:00
MynahMarie
301b171f55 Merge branch 'develop' into fix_addlNotes 2020-02-05 10:53:52 +02:00
MynahMarie
08baa2ca20 remove package-lock.json from PR 2020-02-05 10:44:45 +02:00
Melior
2081590a19 Merge branch 'origin/develop' into Weblate. 2020-02-04 22:45:36 +01:00
Melior
f719592237 Translated using Weblate (Korean)
Currently translated at 34.6% (51 of 147 strings)

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

Translated using Weblate (Korean)

Currently translated at 99.4% (498 of 501 strings)

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

Translated using Weblate (Korean)

Currently translated at 69.8% (44 of 63 strings)

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

Translated using Weblate (Korean)

Currently translated at 100.0% (126 of 126 strings)

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

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 (Swedish)

Currently translated at 98.7% (230 of 233 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (138 of 138 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (147 of 147 strings)

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

Translated using Weblate (Spanish (Latin America))

Currently translated at 99.3% (146 of 147 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (171 of 171 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (67 of 67 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (174 of 174 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (485 of 485 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (2033 of 2033 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (2033 of 2033 strings)

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

Translated using Weblate (Swedish)

Currently translated at 90.0% (1830 of 2033 strings)

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

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (2033 of 2033 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (298 of 298 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% (328 of 328 strings)

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

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/

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/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (677 of 677 strings)

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

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 (Traditional))

Currently translated at 100.0% (230 of 230 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (230 of 230 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% (134 of 134 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (501 of 501 strings)

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

Translated using Weblate (Swedish)

Currently translated at 100.0% (501 of 501 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (211 of 211 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (233 of 233 strings)

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

Translated using Weblate (Russian)

Currently translated at 100.0% (233 of 233 strings)

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

Translated using Weblate (Japanese)

Currently translated at 99.5% (232 of 233 strings)

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

Translated using Weblate (Spanish (Latin America))

Currently translated at 100.0% (501 of 501 strings)

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

Translated using Weblate (Russian)

Currently translated at 100.0% (2033 of 2033 strings)

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

Translated using Weblate (Japanese)

Currently translated at 98.2% (665 of 677 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (233 of 233 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (233 of 233 strings)

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

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (233 of 233 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (138 of 138 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (138 of 138 strings)

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

Translated using Weblate (Spanish (Latin America))

Currently translated at 98.2% (226 of 230 strings)

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

Translated using Weblate (Spanish (Latin America))

Currently translated at 100.0% (501 of 501 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (485 of 485 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (2033 of 2033 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (2033 of 2033 strings)

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

Translated using Weblate (Spanish)

Currently translated at 92.6% (1883 of 2033 strings)

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

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (2033 of 2033 strings)

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

Translated using Weblate (German)

Currently translated at 100.0% (2033 of 2033 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (328 of 328 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (328 of 328 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (677 of 677 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (677 of 677 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% (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 100.0% (78 of 78 strings)

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

Translated using Weblate (Russian)

Currently translated at 100.0% (501 of 501 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (211 of 211 strings)

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

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/

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% (211 of 211 strings)

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

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 (Traditional))

Currently translated at 99.5% (232 of 233 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 99.5% (232 of 233 strings)

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

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (233 of 233 strings)

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

Translated using Weblate (French)

Currently translated at 100.0% (233 of 233 strings)

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

Translated using Weblate (German)

Currently translated at 100.0% (233 of 233 strings)

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

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/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (138 of 138 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (138 of 138 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (147 of 147 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (171 of 171 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (67 of 67 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (67 of 67 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (12 of 12 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (12 of 12 strings)

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

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 (Simplified))

Currently translated at 100.0% (174 of 174 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (485 of 485 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (485 of 485 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 99.7% (2027 of 2033 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 99.7% (2027 of 2033 strings)

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

Translated using Weblate (French)

Currently translated at 100.0% (2033 of 2033 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (298 of 298 strings)

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

Translated using Weblate (German)

Currently translated at 99.9% (2031 of 2033 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (328 of 328 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (328 of 328 strings)

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

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/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (63 of 63 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (63 of 63 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (677 of 677 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (677 of 677 strings)

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

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 (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 (Traditional))

Currently translated at 100.0% (70 of 70 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (230 of 230 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (230 of 230 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (134 of 134 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (134 of 134 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (501 of 501 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (211 of 211 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (211 of 211 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/zh_Hans/
2020-02-04 22:45:05 +01:00
Sabe Jones
25ac3db8c3 Merge branch 'release' into develop 2020-02-04 15:43:14 -06:00
Sabe Jones
20472caaee 4.132.0 2020-02-04 15:42:29 -06:00
Sabe Jones
37ab993b01 chore(sprites): compile 2020-02-04 15:42:23 -06:00
Sabe Jones
b2cfeaf9bd feat(content): Armoire and Backgrounds 2020-02 2020-02-04 15:42:12 -06:00
MynahMarie
7c83cfe9b4 fix merge conflicts 2020-02-03 16:23:47 +02:00
dependabot-preview[bot]
57e12c67ac build(deps): bump @storybook/addon-knobs in /website/client (#11811)
Bumps [@storybook/addon-knobs](https://github.com/storybookjs/storybook/tree/HEAD/addons/knobs) from 5.3.9 to 5.3.10.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v5.3.10/addons/knobs)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-03 09:50:07 +01:00
dependabot-preview[bot]
775ed7f873 build(deps): bump @storybook/addon-notes in /website/client (#11810)
Bumps [@storybook/addon-notes](https://github.com/storybookjs/storybook/tree/HEAD/addons/notes) from 5.3.9 to 5.3.10.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/v5.3.10/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v5.3.10/addons/notes)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-03 09:49:52 +01:00
dependabot-preview[bot]
b608ca4d72 build(deps): bump @babel/core from 7.8.3 to 7.8.4 (#11814)
Bumps [@babel/core](https://github.com/babel/babel) from 7.8.3 to 7.8.4.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.8.3...v7.8.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-03 09:47:23 +01:00
dependabot-preview[bot]
1536bbfce5 build(deps): bump js2xmlparser from 4.0.0 to 4.0.1 (#11818)
Bumps [js2xmlparser](https://github.com/michaelkourlas/node-js2xmlparser) from 4.0.0 to 4.0.1.
- [Release notes](https://github.com/michaelkourlas/node-js2xmlparser/releases)
- [Changelog](https://github.com/michaelkourlas/node-js2xmlparser/blob/master/CHANGES.md)
- [Commits](https://github.com/michaelkourlas/node-js2xmlparser/compare/v4.0.0...v4.0.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-03 09:47:15 +01:00
dependabot-preview[bot]
d4957f39a2 build(deps): bump @storybook/addon-links in /website/client (#11809)
Bumps [@storybook/addon-links](https://github.com/storybookjs/storybook/tree/HEAD/addons/links) from 5.3.9 to 5.3.10.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v5.3.10/addons/links)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-03 09:47:02 +01:00
dependabot-preview[bot]
6d8833a83f build(deps): bump rimraf from 3.0.0 to 3.0.1 (#11819)
Bumps [rimraf](https://github.com/isaacs/rimraf) from 3.0.0 to 3.0.1.
- [Release notes](https://github.com/isaacs/rimraf/releases)
- [Changelog](https://github.com/isaacs/rimraf/blob/master/CHANGELOG.md)
- [Commits](https://github.com/isaacs/rimraf/compare/v3.0.0...v3.0.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-03 09:46:52 +01:00
dependabot-preview[bot]
bb7b1c15ee build(deps): bump mongoose from 5.8.9 to 5.8.11 (#11815)
Bumps [mongoose](https://github.com/Automattic/mongoose) from 5.8.9 to 5.8.11.
- [Release notes](https://github.com/Automattic/mongoose/releases)
- [Changelog](https://github.com/Automattic/mongoose/blob/master/History.md)
- [Commits](https://github.com/Automattic/mongoose/compare/5.8.9...5.8.11)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-03 09:46:41 +01:00
dependabot-preview[bot]
9b43ff75fc build(deps): bump bootstrap-vue from 2.3.0 to 2.4.0 in /website/client (#11812)
Bumps [bootstrap-vue](https://github.com/bootstrap-vue/bootstrap-vue) from 2.3.0 to 2.4.0.
- [Release notes](https://github.com/bootstrap-vue/bootstrap-vue/releases)
- [Changelog](https://github.com/bootstrap-vue/bootstrap-vue/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/bootstrap-vue/bootstrap-vue/compare/v2.3.0...v2.4.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-03 09:45:53 +01:00
dependabot-preview[bot]
0aaac9988c build(deps): bump @storybook/vue from 5.3.9 to 5.3.10 in /website/client (#11808)
Bumps [@storybook/vue](https://github.com/storybookjs/storybook/tree/HEAD/app/vue) from 5.3.9 to 5.3.10.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v5.3.10/app/vue)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-03 09:45:42 +01:00
dependabot-preview[bot]
edcd587b03 build(deps): bump @storybook/addon-actions in /website/client (#11807)
Bumps [@storybook/addon-actions](https://github.com/storybookjs/storybook/tree/HEAD/addons/actions) from 5.3.9 to 5.3.10.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v5.3.10/addons/actions)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-03 09:45:12 +01:00
dependabot-preview[bot]
e0b2437f60 build(deps): bump @babel/preset-env from 7.8.3 to 7.8.4 (#11817)
Bumps [@babel/preset-env](https://github.com/babel/babel) from 7.8.3 to 7.8.4.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.8.3...v7.8.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-03 09:44:23 +01:00
MynahMarie
3045be3ddf ref issue #11794 - Add error check in _addlNotes field. 2020-02-02 14:56:20 +02:00
Nik
57b2166bde NPC style should apply to tier $800 only (#11797)
- Fix wrong level field
- Check if tier is 800 everywhere
2020-02-02 11:59:43 +01:00
Nik
39b3ebe04a NPC style should apply to tier $800 only (#11797)
- Fix wrong level field
- Check if tier is 800 everywhere
2020-02-02 11:58:32 +01:00
MynahMarie
81c58d2122 update package.json 2020-02-02 11:54:45 +02:00
Sabe Jones
a607882214 Merge branch 'release' into develop 2020-02-01 12:07:53 -06:00
Sabe Jones
0d843d53a5 4.131.4 2020-02-01 12:07:32 -06:00
Sabe Jones
34145ed8ca fix(event): decakeify 2020-02-01 12:07:23 -06:00
Matteo Pagliazzi
ad3b673fda fix(member details): disable name style in header 2020-02-01 15:03:46 +01:00
Matteo Pagliazzi
4e6b411763 fix(dropdown): correct dropdown menus colors 2020-02-01 14:54:43 +01:00
Sabe Jones
dec7bd2ec6 Merge branch 'release' into develop 2020-02-01 07:27:02 -06:00
Sabe Jones
1cc3633e64 4.131.3 2020-02-01 07:26:47 -06:00
Sabe Jones
64c79b7eb6 chore(sprites): compile 2020-02-01 07:26:40 -06:00
Sabe Jones
b2d997c5a6 Merge branch 'release' into develop 2020-02-01 07:21:23 -06:00
Sabe Jones
1b14c5f6d5 4.131.2 2020-02-01 07:21:08 -06:00
Sabe Jones
e800cd9a3f chore(event): End Wonderland 2020-02-01 07:20:55 -06:00
Sabe Jones
68aeda44d4 Merge branch 'release' into develop 2020-02-01 06:27:22 -06:00
Sabe Jones
443f88ac41 4.131.1 2020-02-01 06:24:25 -06:00
Sabe Jones
d77b791d56 fix(sprites): rename February items 2020-02-01 06:21:47 -06:00
Matteo Pagliazzi
d5c7ced5e3 Merge pull request #11763 from Kevin-DDR/fixTiers
contributor tier color/icon appear in guild/challenge member/participant list Fix for #11736
2020-02-01 12:01:34 +01:00
Matteo Pagliazzi
f45fdfbe0d Merge pull request #11708 from alexthomson1/issue-11615
stop dropdown menu getting stuck on hover - fixes #11615
2020-02-01 11:23:29 +01:00
Tom Thorpe
311df85dfc Show "no owner" when challenge leader cannot be found
Fixes #11768

- Check if `challenge.leader` is `null` before trying to display the user's name after "Created By:"
- Check the `challenge.leader` isn't `null` before trying to get its `id` for comparison when determining if the current user `canDelete` or `canEdit`
2020-02-01 09:17:59 +00:00
Melior
0e8fb62887 Merge branch 'origin/develop' into Weblate. 2020-01-31 13:55:45 +01:00
Melior
4d2b7dbf5c Translated using Weblate (Korean)
Currently translated at 9.7% (32 of 328 strings)

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

Translated using Weblate (Korean)

Currently translated at 9.7% (32 of 328 strings)

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

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/

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% (211 of 211 strings)

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

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 (Traditional))

Currently translated at 100.0% (232 of 232 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (232 of 232 strings)

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

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/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (138 of 138 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (28 of 28 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (28 of 28 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (147 of 147 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (147 of 147 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (171 of 171 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (171 of 171 strings)

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

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (171 of 171 strings)

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

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 (Simplified))

Currently translated at 100.0% (8 of 8 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (67 of 67 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (12 of 12 strings)

Translation: Habitica/Merch
Translate-URL: https://translate.habitica.com/projects/habitica/merch/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 (Simplified))

Currently translated at 100.0% (31 of 31 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (174 of 174 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (174 of 174 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (485 of 485 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (485 of 485 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (2027 of 2027 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (2027 of 2027 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (298 of 298 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (298 of 298 strings)

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

Translated using Weblate (German)

Currently translated at 100.0% (2027 of 2027 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (328 of 328 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (328 of 328 strings)

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

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/

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/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (63 of 63 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (63 of 63 strings)

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

Translated using Weblate (Polish)

Currently translated at 100.0% (63 of 63 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (15 of 15 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (677 of 677 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (677 of 677 strings)

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

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 (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 100.0% (78 of 78 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (230 of 230 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (134 of 134 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (134 of 134 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (211 of 211 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (211 of 211 strings)

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

Translated using Weblate (Bengali)

Currently translated at 98.2% (55 of 56 strings)

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

Translated using Weblate (Bengali)

Currently translated at 100.0% (211 of 211 strings)

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

Translated using Weblate (Latin)

Currently translated at 98.4% (64 of 65 strings)

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

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/

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/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (232 of 232 strings)

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

Translated using Weblate (Japanese)

Currently translated at 100.0% (232 of 232 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (138 of 138 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (171 of 171 strings)

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

Translated using Weblate (Polish)

Currently translated at 100.0% (171 of 171 strings)

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

Translated using Weblate (Japanese)

Currently translated at 100.0% (171 of 171 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (4 of 4 strings)

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

Translated using Weblate (Japanese)

Currently translated at 100.0% (67 of 67 strings)

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

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 (Japanese)

Currently translated at 90.2% (157 of 174 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (485 of 485 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (485 of 485 strings)

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

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (485 of 485 strings)

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

Translated using Weblate (Japanese)

Currently translated at 100.0% (485 of 485 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (2027 of 2027 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (2027 of 2027 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (298 of 298 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (298 of 298 strings)

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

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (298 of 298 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (328 of 328 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (328 of 328 strings)

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

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/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (677 of 677 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (677 of 677 strings)

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

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 (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 (Portuguese)

Currently translated at 87.6% (311 of 355 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (230 of 230 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (230 of 230 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (134 of 134 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (134 of 134 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (501 of 501 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (65 of 65 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (211 of 211 strings)

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

Translated using Weblate (Russian)

Currently translated at 100.0% (232 of 232 strings)

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

Translated using Weblate (Turkish)

Currently translated at 89.0% (155 of 174 strings)

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

Translated using Weblate (Turkish)

Currently translated at 98.5% (478 of 485 strings)

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

Translated using Weblate (Polish)

Currently translated at 87.1% (1766 of 2027 strings)

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

Translated using Weblate (German)

Currently translated at 100.0% (2027 of 2027 strings)

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

Translated using Weblate (German)

Currently translated at 100.0% (298 of 298 strings)

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

Translated using Weblate (Turkish)

Currently translated at 99.3% (326 of 328 strings)

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

Translated using Weblate (Polish)

Currently translated at 87.5% (593 of 677 strings)

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

Translated using Weblate (Turkish)

Currently translated at 99.1% (228 of 230 strings)

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

Translated using Weblate (Russian)

Currently translated at 100.0% (501 of 501 strings)

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

Translated using Weblate (Polish)

Currently translated at 100.0% (501 of 501 strings)

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

Translated using Weblate (Turkish)

Currently translated at 69.2% (45 of 65 strings)

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

Translated using Weblate (Portuguese)

Currently translated at 72.3% (47 of 65 strings)

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

Translated using Weblate (Turkish)

Currently translated at 98.1% (207 of 211 strings)

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

Translated using Weblate (English)

Currently translated at 0.5% (3 of 501 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/en@lolcat/

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/

Translated using Weblate (Spanish)

Currently translated at 92.1% (1868 of 2027 strings)

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

Translated using Weblate (German)

Currently translated at 100.0% (2027 of 2027 strings)

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

Translated using Weblate (Spanish)

Currently translated at 99.4% (498 of 501 strings)

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

Translated using Weblate (Hungarian)

Currently translated at 33.8% (22 of 65 strings)

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

Translated using Weblate (Danish)

Currently translated at 100.0% (232 of 232 strings)

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

Translated using Weblate (German)

Currently translated at 100.0% (2027 of 2027 strings)

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

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (677 of 677 strings)

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

Translated using Weblate (Danish)

Currently translated at 95.7% (340 of 355 strings)

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

Translated using Weblate (Hungarian)

Currently translated at 32.3% (21 of 65 strings)

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

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (211 of 211 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/pt_BR/
2020-01-31 13:55:16 +01:00
Sabe Jones
5f7a126df2 4.131.0 2020-01-31 06:47:32 -06:00
Sabe Jones
728eaecfc8 Merge branch 'develop' into release 2020-01-31 06:47:26 -06:00
Sabe Jones
505509d4b7 chore(sprites): compile 2020-01-31 06:47:06 -06:00
Sabe Jones
e31de5c8f0 feat(content): Feb 2020 subscriber set 2020-01-31 06:46:56 -06:00
Matteo Pagliazzi
c772afd0c8 Merge pull request #11647 from tsukimi2/bugfix-npc-style
Fix issues in NPCs should have NPC style on Display Name in chat, Hall. (fixes #11617)
2020-01-29 15:41:46 +01:00
Matteo Pagliazzi
ebbec57b29 Merge pull request #11791 from Alys/invalid-uuid-messages
clarify all "Invalid uuid" messages by making each unique
2020-01-29 15:39:38 +01:00
Alys
82a5bc236f clarify all "Invalid uuid" messages by making each unique 2020-01-29 15:49:55 +10:00
Sabe Jones
5a065b8a8a fix(test): food expectation 2020-01-28 15:49:50 -06:00
Sabe Jones
bc1eb62a35 feat(event): Birthday 2020 2020-01-28 15:39:05 -06:00
Matteo Pagliazzi
02d6b77a03 Merge pull request #11783 from HabitRPG/dependabot/npm_and_yarn/website/client/storybook/addon-notes-5.3.9
build(deps): bump @storybook/addon-notes from 5.3.7 to 5.3.9 in /website/client
2020-01-27 10:33:10 +01:00
Matteo Pagliazzi
ec4ad7c91b Merge pull request #11781 from HabitRPG/dependabot/npm_and_yarn/website/client/storybook/addon-knobs-5.3.9
build(deps): bump @storybook/addon-knobs from 5.3.7 to 5.3.9 in /website/client
2020-01-27 10:32:58 +01:00
dependabot-preview[bot]
8e37d35fda build(deps): bump @storybook/addon-notes in /website/client
Bumps [@storybook/addon-notes](https://github.com/storybookjs/storybook/tree/HEAD/addons/notes) from 5.3.7 to 5.3.9.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v5.3.9/addons/notes)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-27 09:31:30 +00:00
dependabot-preview[bot]
384312b089 build(deps): bump @storybook/addon-knobs in /website/client
Bumps [@storybook/addon-knobs](https://github.com/storybookjs/storybook/tree/HEAD/addons/knobs) from 5.3.7 to 5.3.9.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v5.3.9/addons/knobs)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-27 09:31:20 +00:00
Matteo Pagliazzi
d44d62d02b Merge pull request #11770 from HabitRPG/dependabot/npm_and_yarn/axios-0.19.2
build(deps-dev): bump axios from 0.19.1 to 0.19.2
2020-01-27 10:28:57 +01:00
dependabot-preview[bot]
674b6083f2 build(deps-dev): bump axios from 0.19.1 to 0.19.2
Bumps [axios](https://github.com/axios/axios) from 0.19.1 to 0.19.2.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/master/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/0.19.1...v0.19.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-27 09:27:48 +00:00
Matteo Pagliazzi
cb175008dd Merge pull request #11780 from HabitRPG/dependabot/npm_and_yarn/website/client/storybook/addon-links-5.3.9
build(deps): bump @storybook/addon-links from 5.3.7 to 5.3.9 in /website/client
2020-01-27 10:27:22 +01:00
Matteo Pagliazzi
a5c0d50ade Merge pull request #11784 from HabitRPG/dependabot/npm_and_yarn/website/client/storybook/vue-5.3.9
build(deps): bump @storybook/vue from 5.3.7 to 5.3.9 in /website/client
2020-01-27 10:27:09 +01:00
Matteo Pagliazzi
53736f1216 Merge pull request #11778 from HabitRPG/dependabot/npm_and_yarn/aws-sdk-2.610.0
build(deps): bump aws-sdk from 2.606.0 to 2.610.0
2020-01-27 10:26:57 +01:00
Matteo Pagliazzi
6064bc0103 Merge pull request #11782 from HabitRPG/dependabot/npm_and_yarn/website/client/storybook/addon-actions-5.3.9
build(deps): bump @storybook/addon-actions from 5.3.7 to 5.3.9 in /website/client
2020-01-27 10:26:42 +01:00
Matteo Pagliazzi
cf7fd60fff Merge pull request #11786 from HabitRPG/dependabot/npm_and_yarn/website/client/bootstrap-vue-2.3.0
build(deps): bump bootstrap-vue from 2.2.2 to 2.3.0 in /website/client
2020-01-27 10:26:27 +01:00
Matteo Pagliazzi
dd8d84bff1 Merge pull request #11785 from HabitRPG/dependabot/npm_and_yarn/website/client/axios-0.19.2
build(deps): bump axios from 0.19.1 to 0.19.2 in /website/client
2020-01-27 10:25:37 +01:00
Matteo Pagliazzi
c74b6297f2 Merge pull request #11788 from HabitRPG/dependabot/npm_and_yarn/website/client/inspectpack-4.3.1
build(deps): bump inspectpack from 4.3.0 to 4.3.1 in /website/client
2020-01-27 10:25:12 +01:00
dependabot-preview[bot]
4c3efdebfa build(deps): bump inspectpack from 4.3.0 to 4.3.1 in /website/client
Bumps [inspectpack](https://github.com/FormidableLabs/inspectpack) from 4.3.0 to 4.3.1.
- [Release notes](https://github.com/FormidableLabs/inspectpack/releases)
- [Changelog](https://github.com/FormidableLabs/inspectpack/blob/master/HISTORY.md)
- [Commits](https://github.com/FormidableLabs/inspectpack/compare/v4.3.0...v4.3.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-27 08:10:30 +00:00
dependabot-preview[bot]
2aba6acc47 build(deps): bump bootstrap-vue from 2.2.2 to 2.3.0 in /website/client
Bumps [bootstrap-vue](https://github.com/bootstrap-vue/bootstrap-vue) from 2.2.2 to 2.3.0.
- [Release notes](https://github.com/bootstrap-vue/bootstrap-vue/releases)
- [Changelog](https://github.com/bootstrap-vue/bootstrap-vue/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/bootstrap-vue/bootstrap-vue/compare/v2.2.2...v2.3.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-27 08:09:27 +00:00
dependabot-preview[bot]
10718def11 build(deps): bump axios from 0.19.1 to 0.19.2 in /website/client
Bumps [axios](https://github.com/axios/axios) from 0.19.1 to 0.19.2.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/master/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/0.19.1...v0.19.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-27 08:08:34 +00:00
dependabot-preview[bot]
df8e3e5b64 build(deps): bump @storybook/vue from 5.3.7 to 5.3.9 in /website/client
Bumps [@storybook/vue](https://github.com/storybookjs/storybook/tree/HEAD/app/vue) from 5.3.7 to 5.3.9.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v5.3.9/app/vue)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-27 08:07:58 +00:00
dependabot-preview[bot]
61e23c5157 build(deps): bump @storybook/addon-actions in /website/client
Bumps [@storybook/addon-actions](https://github.com/storybookjs/storybook/tree/HEAD/addons/actions) from 5.3.7 to 5.3.9.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v5.3.9/addons/actions)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-27 08:06:06 +00:00
dependabot-preview[bot]
b77de58f71 build(deps): bump @storybook/addon-links in /website/client
Bumps [@storybook/addon-links](https://github.com/storybookjs/storybook/tree/HEAD/addons/links) from 5.3.7 to 5.3.9.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v5.3.9/addons/links)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-27 08:04:09 +00:00
dependabot-preview[bot]
aef217dc56 build(deps): bump aws-sdk from 2.606.0 to 2.610.0
Bumps [aws-sdk](https://github.com/aws/aws-sdk-js) from 2.606.0 to 2.610.0.
- [Release notes](https://github.com/aws/aws-sdk-js/releases)
- [Changelog](https://github.com/aws/aws-sdk-js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-js/compare/v2.606.0...v2.610.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-27 07:53:45 +00:00
alexthomson1
ab4009bd32 Refactoring dropdown.vue so that dropdownMobile calls openDropdown and closeDropdown 2020-01-25 18:28:26 -07:00
Sabe Jones
aefd664db1 Correct some modal repops (#11739)
* fix(modals): correct some repops

* fix(modals): also clean out "prev"

* refactor(modals): hide in dismiss event
2020-01-24 16:36:11 -06:00
Melior
b9d3d7f87a Merge branch 'origin/develop' into Weblate. 2020-01-23 22:51:26 +01:00
Melior
4fa245c929 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/

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% (211 of 211 strings)

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

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 (Traditional))

Currently translated at 100.0% (232 of 232 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (232 of 232 strings)

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

Translated using Weblate (French)

Currently translated at 100.0% (232 of 232 strings)

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

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/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (138 of 138 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (138 of 138 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (28 of 28 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (147 of 147 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (171 of 171 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (171 of 171 strings)

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

Translated using Weblate (French)

Currently translated at 100.0% (171 of 171 strings)

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

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 (Simplified))

Currently translated at 100.0% (8 of 8 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (67 of 67 strings)

Translation: Habitica/Messages
Translate-URL: https://translate.habitica.com/projects/habitica/messages/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% (174 of 174 strings)

Translation: Habitica/Limited
Translate-URL: https://translate.habitica.com/projects/habitica/limited/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% (485 of 485 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (485 of 485 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (6 of 6 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (2027 of 2027 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (2027 of 2027 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (298 of 298 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (298 of 298 strings)

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

Translated using Weblate (German)

Currently translated at 100.0% (2027 of 2027 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (328 of 328 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (328 of 328 strings)

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

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/

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/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (63 of 63 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% (63 of 63 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% (15 of 15 strings)

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

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (677 of 677 strings)

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

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (677 of 677 strings)

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

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% (355 of 355 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/zh_Hant/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (70 of 70 strings)

Translation: Habitica/Contrib
Translate-URL: https://translate.habitica.com/projects/habitica/contrib/zh_Hant/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (230 of 230 strings)

Translation: Habitica/Character
Translate-URL: https://translate.habitica.com/projects/habitica/character/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (230 of 230 strings)

Translation: Habitica/Character
Translate-URL: https://translate.habitica.com/projects/habitica/character/zh_Hans/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (134 of 134 strings)

Translation: Habitica/Challenge
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/zh_Hant/

Translated using Weblate (French)

Currently translated at 100.0% (501 of 501 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/fr/

Translated using Weblate (German)

Currently translated at 100.0% (501 of 501 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/de/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (65 of 65 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/zh_Hant/

Translated using Weblate (Portuguese)

Currently translated at 52.3% (34 of 65 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/pt/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (211 of 211 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (211 of 211 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/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% (211 of 211 strings)

Translation: Habitica/Tasks
Translate-URL: https://translate.habitica.com/projects/habitica/tasks/zh_Hant/

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 (Traditional))

Currently translated at 100.0% (232 of 232 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (232 of 232 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/zh_Hans/

Translated using Weblate (Russian)

Currently translated at 99.1% (230 of 232 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/ru/

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (232 of 232 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/pt_BR/

Translated using Weblate (Polish)

Currently translated at 100.0% (232 of 232 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/pl/

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (232 of 232 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/en_GB/

Translated using Weblate (German)

Currently translated at 100.0% (232 of 232 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/de/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (28 of 28 strings)

Translation: Habitica/Rebirth
Translate-URL: https://translate.habitica.com/projects/habitica/rebirth/zh_Hans/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (147 of 147 strings)

Translation: Habitica/Pets
Translate-URL: https://translate.habitica.com/projects/habitica/pets/zh_Hans/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (171 of 171 strings)

Translation: Habitica/Npc
Translate-URL: https://translate.habitica.com/projects/habitica/npc/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (171 of 171 strings)

Translation: Habitica/Npc
Translate-URL: https://translate.habitica.com/projects/habitica/npc/zh_Hans/

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (171 of 171 strings)

Translation: Habitica/Npc
Translate-URL: https://translate.habitica.com/projects/habitica/npc/pt_BR/

Translated using Weblate (Polish)

Currently translated at 100.0% (171 of 171 strings)

Translation: Habitica/Npc
Translate-URL: https://translate.habitica.com/projects/habitica/npc/pl/

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (171 of 171 strings)

Translation: Habitica/Npc
Translate-URL: https://translate.habitica.com/projects/habitica/npc/en_GB/

Translated using Weblate (German)

Currently translated at 100.0% (171 of 171 strings)

Translation: Habitica/Npc
Translate-URL: https://translate.habitica.com/projects/habitica/npc/de/

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% (174 of 174 strings)

Translation: Habitica/Limited
Translate-URL: https://translate.habitica.com/projects/habitica/limited/zh_Hant/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (485 of 485 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/zh_Hant/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (6 of 6 strings)

Translation: Habitica/Inventory
Translate-URL: https://translate.habitica.com/projects/habitica/inventory/zh_Hant/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (2027 of 2027 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/zh_Hant/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (298 of 298 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (298 of 298 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/zh_Hans/

Translated using Weblate (German)

Currently translated at 100.0% (2027 of 2027 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/de/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (328 of 328 strings)

Translation: Habitica/Front
Translate-URL: https://translate.habitica.com/projects/habitica/front/zh_Hant/

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 (Chinese (Traditional))

Currently translated at 100.0% (677 of 677 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/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 (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 (Traditional))

Currently translated at 100.0% (70 of 70 strings)

Translation: Habitica/Contrib
Translate-URL: https://translate.habitica.com/projects/habitica/contrib/zh_Hant/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (230 of 230 strings)

Translation: Habitica/Character
Translate-URL: https://translate.habitica.com/projects/habitica/character/zh_Hant/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (501 of 501 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (501 of 501 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/zh_Hans/

Translated using Weblate (Russian)

Currently translated at 99.4% (498 of 501 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/ru/

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (501 of 501 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/pt_BR/

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (501 of 501 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/en_GB/

Translated using Weblate (German)

Currently translated at 100.0% (501 of 501 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/de/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (211 of 211 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (211 of 211 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/zh_Hans/

Translated using Weblate (Russian)

Currently translated at 100.0% (171 of 171 strings)

Translation: Habitica/Npc
Translate-URL: https://translate.habitica.com/projects/habitica/npc/ru/
2020-01-23 22:51:07 +01:00
Sabe Jones
257a52cba1 4.130.2 2020-01-23 15:48:34 -06:00
Sabe Jones
cbac69ab11 chore(news): Bailey 2020-01-23 15:47:53 -06:00
Sabe Jones
d2156eb97b Merge branch 'release' into develop 2020-01-22 05:47:34 -06:00
Sabe Jones
7c50a66ef7 4.130.1 2020-01-22 05:46:21 -06:00
Sabe Jones
0be5b5c9c7 fix(timetrav): no sub but hourglass 2020-01-22 05:46:12 -06:00
Melior
1b1c239aec Merge branch 'origin/develop' into Weblate. 2020-01-21 23:14:08 +01:00
Melior
237c1b0713 Translated using Weblate (German)
Currently translated at 100.0% (2027 of 2027 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/de/

Translated using Weblate (Latin)

Currently translated at 100.0% (134 of 134 strings)

Translation: Habitica/Challenge
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/la/

Translated using Weblate (Danish)

Currently translated at 94.3% (216 of 229 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/da/

Translated using Weblate (Polish)

Currently translated at 100.0% (28 of 28 strings)

Translation: Habitica/Rebirth
Translate-URL: https://translate.habitica.com/projects/habitica/rebirth/pl/

Translated using Weblate (Polish)

Currently translated at 100.0% (171 of 171 strings)

Translation: Habitica/Npc
Translate-URL: https://translate.habitica.com/projects/habitica/npc/pl/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (67 of 67 strings)

Translation: Habitica/Messages
Translate-URL: https://translate.habitica.com/projects/habitica/messages/zh_Hans/

Translated using Weblate (Polish)

Currently translated at 100.0% (67 of 67 strings)

Translation: Habitica/Messages
Translate-URL: https://translate.habitica.com/projects/habitica/messages/pl/

Translated using Weblate (Danish)

Currently translated at 100.0% (12 of 12 strings)

Translation: Habitica/Merch
Translate-URL: https://translate.habitica.com/projects/habitica/merch/da/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (174 of 174 strings)

Translation: Habitica/Limited
Translate-URL: https://translate.habitica.com/projects/habitica/limited/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (174 of 174 strings)

Translation: Habitica/Limited
Translate-URL: https://translate.habitica.com/projects/habitica/limited/zh_Hans/

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/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (2027 of 2027 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/zh_Hant/

Translated using Weblate (Russian)

Currently translated at 100.0% (2027 of 2027 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/ru/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (298 of 298 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/zh_Hant/

Translated using Weblate (Polish)

Currently translated at 100.0% (298 of 298 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/pl/

Translated using Weblate (Danish)

Currently translated at 100.0% (63 of 63 strings)

Translation: Habitica/Defaulttasks
Translate-URL: https://translate.habitica.com/projects/habitica/defaulttasks/da/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (677 of 677 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (677 of 677 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/zh_Hans/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (70 of 70 strings)

Translation: Habitica/Contrib
Translate-URL: https://translate.habitica.com/projects/habitica/contrib/zh_Hant/

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 (Polish)

Currently translated at 100.0% (494 of 494 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/pl/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (65 of 65 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (65 of 65 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/zh_Hans/

Translated using Weblate (Korean)

Currently translated at 34.6% (51 of 147 strings)

Translation: Habitica/Pets
Translate-URL: https://translate.habitica.com/projects/habitica/pets/ko/

Translated using Weblate (Latin)

Currently translated at 100.0% (134 of 134 strings)

Translation: Habitica/Challenge
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/la/

Translated using Weblate (Latin)

Currently translated at 93.8% (61 of 65 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/la/

Translated using Weblate (Korean)

Currently translated at 47.6% (30 of 63 strings)

Translation: Habitica/Defaulttasks
Translate-URL: https://translate.habitica.com/projects/habitica/defaulttasks/ko/

Translated using Weblate (Korean)

Currently translated at 87.6% (311 of 355 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/ko/

Translated using Weblate (Polish)

Currently translated at 100.0% (229 of 229 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/pl/

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/

Translated using Weblate (German)

Currently translated at 100.0% (138 of 138 strings)

Translation: Habitica/Quests
Translate-URL: https://translate.habitica.com/projects/habitica/quests/de/

Translated using Weblate (Polish)

Currently translated at 100.0% (174 of 174 strings)

Translation: Habitica/Limited
Translate-URL: https://translate.habitica.com/projects/habitica/limited/pl/

Translated using Weblate (Polish)

Currently translated at 100.0% (485 of 485 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/pl/

Translated using Weblate (Russian)

Currently translated at 99.9% (2025 of 2027 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/ru/

Translated using Weblate (German)

Currently translated at 100.0% (2027 of 2027 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/de/

Translated using Weblate (Polish)

Currently translated at 100.0% (328 of 328 strings)

Translation: Habitica/Front
Translate-URL: https://translate.habitica.com/projects/habitica/front/pl/

Translated using Weblate (Portuguese)

Currently translated at 91.7% (621 of 677 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/pt/

Translated using Weblate (Portuguese)

Currently translated at 100.0% (126 of 126 strings)

Translation: Habitica/Communityguidelines
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/pt/

Translated using Weblate (Polish)

Currently translated at 100.0% (355 of 355 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/pl/

Translated using Weblate (Polish)

Currently translated at 100.0% (230 of 230 strings)

Translation: Habitica/Character
Translate-URL: https://translate.habitica.com/projects/habitica/character/pl/

Translated using Weblate (Polish)

Currently translated at 100.0% (211 of 211 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/pl/

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/

Translated using Weblate (Korean)

Currently translated at 100.0% (494 of 494 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/ko/

Translated using Weblate (Latin)

Currently translated at 93.8% (61 of 65 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/la/

Translated using Weblate (Latin)

Currently translated at 93.8% (61 of 65 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/la/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (2027 of 2027 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (2027 of 2027 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/zh_Hans/

Translated using Weblate (German)

Currently translated at 100.0% (298 of 298 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/de/

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (355 of 355 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/en_GB/

Translated using Weblate (German)

Currently translated at 100.0% (65 of 65 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/de/

Translated using Weblate (Korean)

Currently translated at 95.3% (471 of 494 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/ko/

Translated using Weblate (Korean)

Currently translated at 95.3% (471 of 494 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/ko/

Translated using Weblate (Korean)

Currently translated at 34.6% (51 of 147 strings)

Translation: Habitica/Pets
Translate-URL: https://translate.habitica.com/projects/habitica/pets/ko/

Translated using Weblate (Korean)

Currently translated at 97.6% (167 of 171 strings)

Translation: Habitica/Npc
Translate-URL: https://translate.habitica.com/projects/habitica/npc/ko/

Translated using Weblate (Korean)

Currently translated at 100.0% (4 of 4 strings)

Translation: Habitica/Noscript
Translate-URL: https://translate.habitica.com/projects/habitica/noscript/ko/

Translated using Weblate (Korean)

Currently translated at 100.0% (12 of 12 strings)

Translation: Habitica/Merch
Translate-URL: https://translate.habitica.com/projects/habitica/merch/ko/

Translated using Weblate (Latin)

Currently translated at 100.0% (134 of 134 strings)

Translation: Habitica/Challenge
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/la/

Translated using Weblate (Korean)

Currently translated at 100.0% (134 of 134 strings)

Translation: Habitica/Challenge
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/ko/

Translated using Weblate (Korean)

Currently translated at 93.7% (463 of 494 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/ko/

Translated using Weblate (Korean)

Currently translated at 93.7% (463 of 494 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/ko/

Translated using Weblate (Korean)

Currently translated at 100.0% (65 of 65 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/ko/

Translated using Weblate (Korean)

Currently translated at 100.0% (67 of 67 strings)

Translation: Habitica/Messages
Translate-URL: https://translate.habitica.com/projects/habitica/messages/ko/

Translated using Weblate (Korean)

Currently translated at 98.9% (480 of 485 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/ko/

Translated using Weblate (Korean)

Currently translated at 99.3% (296 of 298 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/ko/

Translated using Weblate (Korean)

Currently translated at 46.0% (29 of 63 strings)

Translation: Habitica/Defaulttasks
Translate-URL: https://translate.habitica.com/projects/habitica/defaulttasks/ko/

Translated using Weblate (Korean)

Currently translated at 100.0% (15 of 15 strings)

Translation: Habitica/Death
Translate-URL: https://translate.habitica.com/projects/habitica/death/ko/

Translated using Weblate (Korean)

Currently translated at 100.0% (126 of 126 strings)

Translation: Habitica/Communityguidelines
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/ko/

Translated using Weblate (Korean)

Currently translated at 100.0% (126 of 126 strings)

Translation: Habitica/Communityguidelines
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/ko/

Translated using Weblate (Russian)

Currently translated at 100.0% (229 of 229 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/ru/

Translated using Weblate (Spanish)

Currently translated at 100.0% (229 of 229 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/es/

Translated using Weblate (Spanish)

Currently translated at 100.0% (171 of 171 strings)

Translation: Habitica/Npc
Translate-URL: https://translate.habitica.com/projects/habitica/npc/es/

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/

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 (Simplified))

Currently translated at 100.0% (31 of 31 strings)

Translation: Habitica/Maintenance
Translate-URL: https://translate.habitica.com/projects/habitica/maintenance/zh_Hans/

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/

Translated using Weblate (Russian)

Currently translated at 100.0% (485 of 485 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/ru/

Translated using Weblate (Spanish)

Currently translated at 100.0% (485 of 485 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/es/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (2027 of 2027 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/zh_Hant/

Translated using Weblate (Russian)

Currently translated at 99.9% (2025 of 2027 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/ru/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (298 of 298 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/zh_Hant/

Translated using Weblate (Spanish)

Currently translated at 100.0% (298 of 298 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/es/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (328 of 328 strings)

Translation: Habitica/Front
Translate-URL: https://translate.habitica.com/projects/habitica/front/zh_Hant/

Translated using Weblate (Spanish)

Currently translated at 99.6% (327 of 328 strings)

Translation: Habitica/Front
Translate-URL: https://translate.habitica.com/projects/habitica/front/es/

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (328 of 328 strings)

Translation: Habitica/Front
Translate-URL: https://translate.habitica.com/projects/habitica/front/en_GB/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (63 of 63 strings)

Translation: Habitica/Defaulttasks
Translate-URL: https://translate.habitica.com/projects/habitica/defaulttasks/zh_Hans/

Translated using Weblate (Portuguese)

Currently translated at 46.0% (29 of 63 strings)

Translation: Habitica/Defaulttasks
Translate-URL: https://translate.habitica.com/projects/habitica/defaulttasks/pt/

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/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (677 of 677 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (677 of 677 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/zh_Hans/

Translated using Weblate (Russian)

Currently translated at 100.0% (677 of 677 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/ru/

Translated using Weblate (Spanish)

Currently translated at 100.0% (677 of 677 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/es/

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (677 of 677 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/en_GB/

Translated using Weblate (Russian)

Currently translated at 100.0% (355 of 355 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/ru/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (230 of 230 strings)

Translation: Habitica/Character
Translate-URL: https://translate.habitica.com/projects/habitica/character/zh_Hans/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (494 of 494 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/zh_Hant/

Translated using Weblate (Russian)

Currently translated at 100.0% (494 of 494 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/ru/

Translated using Weblate (Spanish)

Currently translated at 100.0% (494 of 494 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/es/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (65 of 65 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/zh_Hant/

Translated using Weblate (Russian)

Currently translated at 100.0% (65 of 65 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/ru/

Translated using Weblate (Spanish)

Currently translated at 100.0% (65 of 65 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/es/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (211 of 211 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/zh_Hant/

Translated using Weblate (Spanish)

Currently translated at 100.0% (211 of 211 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/es/

Translated using Weblate (English (Pirate))

Currently translated at 100.0% (211 of 211 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/en@pirate/

Translated using Weblate (Korean)

Currently translated at 70.7% (46 of 65 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/ko/

Translated using Weblate (Korean)

Currently translated at 70.7% (46 of 65 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/ko/

Translated using Weblate (Korean)

Currently translated at 70.7% (46 of 65 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/ko/
2020-01-21 23:13:52 +01:00
Sabe Jones
1f16891b15 Merge branch 'release' into develop 2020-01-21 15:47:39 -06:00
Sabe Jones
fcebd4327d 4.130.0 2020-01-21 15:47:15 -06:00
Sabe Jones
c2c5c8a86d chore(sprites): compile 2020-01-21 15:47:08 -06:00
Sabe Jones
8bdd56587e chore(timetrav): Bailey 2020-01-21 15:41:16 -06:00
Sabe Jones
64e6e6c27a fix(timetrav): quest currency color, modal refix 2020-01-21 15:16:09 -06:00
Sabe Jones
356302674c fix(buy): modal style changes 2020-01-21 15:03:29 -06:00
Sabe Jones
ee9eb3f78a Merge branch 'release' into sabrecat/timetrav-bgs 2020-01-21 14:58:51 -06:00
osiris
eb21d27fa2 Make changes to correct problems from merging as requested. 2020-01-21 12:40:16 +08:00
osiris
5efde3159f Merge remote-tracking branch 'upstream/develop' into bugfix-npc-style
Updating bugfix-npc-style with recent code from upstream/develop branch.
2020-01-21 11:04:32 +08:00
Kevin-DDR
b6407be529 Merge branch 'fixTiers' of https://github.com/Kevin-DDR/habitica into fixTiers 2020-01-20 20:32:07 +01:00
Kevin-DDR
3477dcd226 Added contributor tier color/icon in guild and challenge member list 2020-01-20 20:29:52 +01:00
Kevin-DDR
b41ad76c9e Added contributor tier color/icon in guild and challenge member list 2020-01-20 20:23:04 +01:00
Matteo Pagliazzi
c264465534 Merge pull request #11750 from HabitRPG/dependabot/npm_and_yarn/babel/preset-env-7.8.3
build(deps): bump @babel/preset-env from 7.8.2 to 7.8.3
2020-01-20 11:21:46 +01:00
dependabot-preview[bot]
7d5dc63efc build(deps): bump @babel/preset-env from 7.8.2 to 7.8.3
Bumps [@babel/preset-env](https://github.com/babel/babel) from 7.8.2 to 7.8.3.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.8.2...v7.8.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-20 10:21:30 +00:00
Matteo Pagliazzi
0d31ceea83 Merge pull request #11757 from HabitRPG/dependabot/npm_and_yarn/website/client/storybook/addon-notes-5.3.7
build(deps): bump @storybook/addon-notes from 5.3.1 to 5.3.7 in /website/client
2020-01-20 11:21:23 +01:00
Matteo Pagliazzi
da5c835ec0 Merge pull request #11760 from HabitRPG/dependabot/npm_and_yarn/website/client/storybook/addon-actions-5.3.7
build(deps): bump @storybook/addon-actions from 5.3.1 to 5.3.7 in /website/client
2020-01-20 11:21:05 +01:00
dependabot-preview[bot]
e753068aee build(deps): bump @storybook/addon-actions in /website/client
Bumps [@storybook/addon-actions](https://github.com/storybookjs/storybook/tree/HEAD/addons/actions) from 5.3.1 to 5.3.7.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v5.3.7/addons/actions)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-20 10:20:45 +00:00
dependabot-preview[bot]
9f20b5c2a8 build(deps): bump @storybook/addon-notes in /website/client
Bumps [@storybook/addon-notes](https://github.com/storybookjs/storybook/tree/HEAD/addons/notes) from 5.3.1 to 5.3.7.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v5.3.7/addons/notes)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-20 10:20:37 +00:00
Matteo Pagliazzi
18a32e8496 Merge pull request #11747 from HabitRPG/dependabot/npm_and_yarn/website/client/sass-loader-8.0.2
build(deps): bump sass-loader from 8.0.1 to 8.0.2 in /website/client
2020-01-20 11:18:31 +01:00
Matteo Pagliazzi
f04c88c60f Merge pull request #11751 from HabitRPG/dependabot/npm_and_yarn/website/client/storybook/addon-knobs-5.3.7
build(deps): bump @storybook/addon-knobs from 5.3.1 to 5.3.7 in /website/client
2020-01-20 11:18:23 +01:00
dependabot-preview[bot]
8f4e20a414 build(deps): bump sass-loader from 8.0.1 to 8.0.2 in /website/client
Bumps [sass-loader](https://github.com/webpack-contrib/sass-loader) from 8.0.1 to 8.0.2.
- [Release notes](https://github.com/webpack-contrib/sass-loader/releases)
- [Changelog](https://github.com/webpack-contrib/sass-loader/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/sass-loader/compare/v8.0.1...v8.0.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-20 10:18:17 +00:00
Matteo Pagliazzi
45ea77b743 Merge pull request #11752 from HabitRPG/dependabot/npm_and_yarn/babel/register-7.8.3
build(deps): bump @babel/register from 7.8.0 to 7.8.3
2020-01-20 11:18:13 +01:00
dependabot-preview[bot]
83b722456c build(deps): bump @storybook/addon-knobs in /website/client
Bumps [@storybook/addon-knobs](https://github.com/storybookjs/storybook/tree/HEAD/addons/knobs) from 5.3.1 to 5.3.7.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v5.3.7/addons/knobs)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-20 10:18:04 +00:00
Matteo Pagliazzi
ca7be4c0a4 Merge pull request #11743 from HabitRPG/dependabot/npm_and_yarn/mongoose-5.8.9
build(deps): bump mongoose from 5.8.7 to 5.8.9
2020-01-20 11:17:58 +01:00
Matteo Pagliazzi
5345b66c8d Merge pull request #11746 from HabitRPG/dependabot/npm_and_yarn/aws-sdk-2.606.0
build(deps): bump aws-sdk from 2.601.0 to 2.606.0
2020-01-20 11:17:31 +01:00
Matteo Pagliazzi
2188bee7cb Merge pull request #11749 from HabitRPG/dependabot/npm_and_yarn/website/client/core-js-3.6.4
build(deps): bump core-js from 3.6.3 to 3.6.4 in /website/client
2020-01-20 11:17:20 +01:00
Matteo Pagliazzi
df43ea863c Merge pull request #11756 from HabitRPG/dependabot/npm_and_yarn/website/client/storybook/vue-5.3.7
build(deps): bump @storybook/vue from 5.3.1 to 5.3.7 in /website/client
2020-01-20 11:17:04 +01:00
Matteo Pagliazzi
78d2299aaa Merge pull request #11745 from HabitRPG/dependabot/npm_and_yarn/babel/core-7.8.3
build(deps): bump @babel/core from 7.8.0 to 7.8.3
2020-01-20 11:16:53 +01:00
Matteo Pagliazzi
d67e800863 Merge pull request #11753 from HabitRPG/dependabot/npm_and_yarn/website/client/bootstrap-vue-2.2.2
build(deps): bump bootstrap-vue from 2.2.0 to 2.2.2 in /website/client
2020-01-20 11:16:41 +01:00
Matteo Pagliazzi
fae18d7631 Merge pull request #11754 from HabitRPG/dependabot/npm_and_yarn/uuid-3.4.0
build(deps): bump uuid from 3.3.3 to 3.4.0
2020-01-20 11:16:30 +01:00
Matteo Pagliazzi
4ede851d30 Merge pull request #11755 from HabitRPG/dependabot/npm_and_yarn/website/client/vue-router-3.1.5
build(deps): bump vue-router from 3.1.3 to 3.1.5 in /website/client
2020-01-20 11:16:04 +01:00
Matteo Pagliazzi
6f69721d25 Merge pull request #11758 from HabitRPG/dependabot/npm_and_yarn/website/client/storybook/addon-links-5.3.7
build(deps): bump @storybook/addon-links from 5.3.1 to 5.3.7 in /website/client
2020-01-20 11:15:48 +01:00
Matteo Pagliazzi
2bc4c1324c Merge pull request #11761 from HabitRPG/dependabot/npm_and_yarn/website/client/uuid-3.4.0
build(deps): bump uuid from 3.3.3 to 3.4.0 in /website/client
2020-01-20 11:15:32 +01:00
Matteo Pagliazzi
59bca3fd3a Merge pull request #11762 from HabitRPG/dependabot/npm_and_yarn/website/client/sass-1.25.0
build(deps): bump sass from 1.24.4 to 1.25.0 in /website/client
2020-01-20 11:15:18 +01:00
dependabot-preview[bot]
d4cfa65f94 build(deps): bump sass from 1.24.4 to 1.25.0 in /website/client
Bumps [sass](https://github.com/sass/dart-sass) from 1.24.4 to 1.25.0.
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.24.4...1.25.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-20 08:12:18 +00:00
dependabot-preview[bot]
caf47a9961 build(deps): bump uuid from 3.3.3 to 3.4.0 in /website/client
Bumps [uuid](https://github.com/uuidjs/uuid) from 3.3.3 to 3.4.0.
- [Release notes](https://github.com/uuidjs/uuid/releases)
- [Changelog](https://github.com/uuidjs/uuid/blob/master/CHANGELOG.md)
- [Commits](https://github.com/uuidjs/uuid/compare/v3.3.3...v3.4.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-20 08:11:25 +00:00
dependabot-preview[bot]
5097f67123 build(deps): bump @storybook/addon-links in /website/client
Bumps [@storybook/addon-links](https://github.com/storybookjs/storybook/tree/HEAD/addons/links) from 5.3.1 to 5.3.7.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v5.3.7/addons/links)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-20 08:08:06 +00:00
dependabot-preview[bot]
fc8bba63df build(deps): bump @storybook/vue from 5.3.1 to 5.3.7 in /website/client
Bumps [@storybook/vue](https://github.com/storybookjs/storybook/tree/HEAD/app/vue) from 5.3.1 to 5.3.7.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v5.3.7/app/vue)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-20 08:05:22 +00:00
dependabot-preview[bot]
71f62232af build(deps): bump vue-router from 3.1.3 to 3.1.5 in /website/client
Bumps [vue-router](https://github.com/vuejs/vue-router) from 3.1.3 to 3.1.5.
- [Release notes](https://github.com/vuejs/vue-router/releases)
- [Changelog](https://github.com/vuejs/vue-router/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/vuejs/vue-router/compare/v3.1.3...v3.1.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-20 08:03:30 +00:00
dependabot-preview[bot]
01699229d3 build(deps): bump uuid from 3.3.3 to 3.4.0
Bumps [uuid](https://github.com/uuidjs/uuid) from 3.3.3 to 3.4.0.
- [Release notes](https://github.com/uuidjs/uuid/releases)
- [Changelog](https://github.com/uuidjs/uuid/blob/master/CHANGELOG.md)
- [Commits](https://github.com/uuidjs/uuid/compare/v3.3.3...v3.4.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-20 08:01:50 +00:00
dependabot-preview[bot]
c55f611807 build(deps): bump bootstrap-vue from 2.2.0 to 2.2.2 in /website/client
Bumps [bootstrap-vue](https://github.com/bootstrap-vue/bootstrap-vue) from 2.2.0 to 2.2.2.
- [Release notes](https://github.com/bootstrap-vue/bootstrap-vue/releases)
- [Changelog](https://github.com/bootstrap-vue/bootstrap-vue/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/bootstrap-vue/bootstrap-vue/compare/v2.2.0...v2.2.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-20 08:01:49 +00:00
dependabot-preview[bot]
a369751051 build(deps): bump @babel/register from 7.8.0 to 7.8.3
Bumps [@babel/register](https://github.com/babel/babel) from 7.8.0 to 7.8.3.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.8.0...v7.8.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-20 08:00:45 +00:00
dependabot-preview[bot]
56ce56fc3b build(deps): bump core-js from 3.6.3 to 3.6.4 in /website/client
Bumps [core-js](https://github.com/zloirock/core-js) from 3.6.3 to 3.6.4.
- [Release notes](https://github.com/zloirock/core-js/releases)
- [Changelog](https://github.com/zloirock/core-js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/zloirock/core-js/compare/v3.6.3...v3.6.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-20 07:58:50 +00:00
dependabot-preview[bot]
a59d130c43 build(deps): bump aws-sdk from 2.601.0 to 2.606.0
Bumps [aws-sdk](https://github.com/aws/aws-sdk-js) from 2.601.0 to 2.606.0.
- [Release notes](https://github.com/aws/aws-sdk-js/releases)
- [Changelog](https://github.com/aws/aws-sdk-js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-js/compare/v2.601.0...v2.606.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-20 07:57:19 +00:00
dependabot-preview[bot]
95b0a79289 build(deps): bump @babel/core from 7.8.0 to 7.8.3
Bumps [@babel/core](https://github.com/babel/babel) from 7.8.0 to 7.8.3.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.8.0...v7.8.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-20 07:56:21 +00:00
dependabot-preview[bot]
45b41cf6b0 build(deps): bump mongoose from 5.8.7 to 5.8.9
Bumps [mongoose](https://github.com/Automattic/mongoose) from 5.8.7 to 5.8.9.
- [Release notes](https://github.com/Automattic/mongoose/releases)
- [Changelog](https://github.com/Automattic/mongoose/blob/master/History.md)
- [Commits](https://github.com/Automattic/mongoose/compare/5.8.7...5.8.9)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-20 07:54:18 +00:00
Matteo Pagliazzi
ca69085e8c Merge pull request #11549 from Nikosmonaut/bugfix-11522_group_plan_tags
Fix can not remove group tag
2020-01-19 12:29:04 +01:00
Matteo Pagliazzi
b5af9b292e Merge pull request #11741 from HabitRPG/fix/pm-textarea-styling
fix style textarea + added story for an overview
2020-01-19 12:22:49 +01:00
negue
4a812a9d28 fix style textarea + added story for an overview 2020-01-18 17:17:50 +01:00
Melior
383bbc558b Merge branch 'origin/develop' into Weblate. 2020-01-16 23:21:01 +01:00
Melior
7effcb49e3 Translated using Weblate (Vietnamese)
Currently translated at 5.7% (19 of 328 strings)

Translation: Habitica/Front
Translate-URL: https://translate.habitica.com/projects/habitica/front/vi/

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/

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/

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 (Traditional))

Currently translated at 100.0% (229 of 229 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/zh_Hant/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (138 of 138 strings)

Translation: Habitica/Quests
Translate-URL: https://translate.habitica.com/projects/habitica/quests/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (138 of 138 strings)

Translation: Habitica/Quests
Translate-URL: https://translate.habitica.com/projects/habitica/quests/zh_Hans/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (147 of 147 strings)

Translation: Habitica/Pets
Translate-URL: https://translate.habitica.com/projects/habitica/pets/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (147 of 147 strings)

Translation: Habitica/Pets
Translate-URL: https://translate.habitica.com/projects/habitica/pets/zh_Hans/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (171 of 171 strings)

Translation: Habitica/Npc
Translate-URL: https://translate.habitica.com/projects/habitica/npc/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% (4 of 4 strings)

Translation: Habitica/Noscript
Translate-URL: https://translate.habitica.com/projects/habitica/noscript/zh_Hant/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (67 of 67 strings)

Translation: Habitica/Messages
Translate-URL: https://translate.habitica.com/projects/habitica/messages/zh_Hant/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (12 of 12 strings)

Translation: Habitica/Merch
Translate-URL: https://translate.habitica.com/projects/habitica/merch/zh_Hant/

Translated using Weblate (Spanish)

Currently translated at 100.0% (67 of 67 strings)

Translation: Habitica/Messages
Translate-URL: https://translate.habitica.com/projects/habitica/messages/es/

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% (174 of 174 strings)

Translation: Habitica/Limited
Translate-URL: https://translate.habitica.com/projects/habitica/limited/zh_Hant/

Translated using Weblate (Russian)

Currently translated at 100.0% (174 of 174 strings)

Translation: Habitica/Limited
Translate-URL: https://translate.habitica.com/projects/habitica/limited/ru/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (485 of 485 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (485 of 485 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/zh_Hans/

Translated using Weblate (Portuguese)

Currently translated at 96.2% (467 of 485 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/pt/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (2027 of 2027 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/zh_Hant/

Translated using Weblate (Spanish)

Currently translated at 91.8% (1862 of 2027 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/es/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (298 of 298 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (298 of 298 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/zh_Hans/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (328 of 328 strings)

Translation: Habitica/Front
Translate-URL: https://translate.habitica.com/projects/habitica/front/zh_Hant/

Translated using Weblate (Portuguese)

Currently translated at 99.3% (326 of 328 strings)

Translation: Habitica/Front
Translate-URL: https://translate.habitica.com/projects/habitica/front/pt/

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/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (63 of 63 strings)

Translation: Habitica/Defaulttasks
Translate-URL: https://translate.habitica.com/projects/habitica/defaulttasks/zh_Hant/

Translated using Weblate (English (Pirate))

Currently translated at 86.6% (13 of 15 strings)

Translation: Habitica/Death
Translate-URL: https://translate.habitica.com/projects/habitica/death/en@pirate/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (677 of 677 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (677 of 677 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/zh_Hans/

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 (Portuguese)

Currently translated at 86.7% (308 of 355 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/pt/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (70 of 70 strings)

Translation: Habitica/Contrib
Translate-URL: https://translate.habitica.com/projects/habitica/contrib/zh_Hant/

Translated using Weblate (English (Pirate))

Currently translated at 100.0% (70 of 70 strings)

Translation: Habitica/Contrib
Translate-URL: https://translate.habitica.com/projects/habitica/contrib/en@pirate/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (230 of 230 strings)

Translation: Habitica/Character
Translate-URL: https://translate.habitica.com/projects/habitica/character/zh_Hant/

Translated using Weblate (Portuguese)

Currently translated at 99.1% (228 of 230 strings)

Translation: Habitica/Character
Translate-URL: https://translate.habitica.com/projects/habitica/character/pt/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (134 of 134 strings)

Translation: Habitica/Challenge
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/zh_Hant/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (494 of 494 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/zh_Hant/

Translated using Weblate (Portuguese)

Currently translated at 26.1% (17 of 65 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/pt/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (211 of 211 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (211 of 211 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/zh_Hans/

Translated using Weblate (Norwegian Nynorsk)

Currently translated at 100.0% (134 of 134 strings)

Translation: Habitica/Challenge
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/nn/

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% (229 of 229 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/zh_Hans/

Translated using Weblate (French)

Currently translated at 100.0% (229 of 229 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/fr/

Translated using Weblate (English (Pirate))

Currently translated at 96.9% (222 of 229 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/en@pirate/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (138 of 138 strings)

Translation: Habitica/Quests
Translate-URL: https://translate.habitica.com/projects/habitica/quests/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (138 of 138 strings)

Translation: Habitica/Quests
Translate-URL: https://translate.habitica.com/projects/habitica/quests/zh_Hans/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (147 of 147 strings)

Translation: Habitica/Pets
Translate-URL: https://translate.habitica.com/projects/habitica/pets/zh_Hans/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (171 of 171 strings)

Translation: Habitica/Npc
Translate-URL: https://translate.habitica.com/projects/habitica/npc/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (171 of 171 strings)

Translation: Habitica/Npc
Translate-URL: https://translate.habitica.com/projects/habitica/npc/zh_Hans/

Translated using Weblate (Spanish (Latin America))

Currently translated at 100.0% (6 of 6 strings)

Translation: Habitica/Inventory
Translate-URL: https://translate.habitica.com/projects/habitica/inventory/es_419/

Translated using Weblate (Spanish (Latin America))

Currently translated at 100.0% (56 of 56 strings)

Translation: Habitica/Faq
Translate-URL: https://translate.habitica.com/projects/habitica/faq/es_419/

Translated using Weblate (Spanish (Latin America))

Currently translated at 95.7% (202 of 211 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/es_419/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (67 of 67 strings)

Translation: Habitica/Messages
Translate-URL: https://translate.habitica.com/projects/habitica/messages/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (67 of 67 strings)

Translation: Habitica/Messages
Translate-URL: https://translate.habitica.com/projects/habitica/messages/zh_Hans/

Translated using Weblate (Russian)

Currently translated at 100.0% (67 of 67 strings)

Translation: Habitica/Messages
Translate-URL: https://translate.habitica.com/projects/habitica/messages/ru/

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (67 of 67 strings)

Translation: Habitica/Messages
Translate-URL: https://translate.habitica.com/projects/habitica/messages/pt_BR/

Translated using Weblate (French)

Currently translated at 100.0% (67 of 67 strings)

Translation: Habitica/Messages
Translate-URL: https://translate.habitica.com/projects/habitica/messages/fr/

Translated using Weblate (English (Pirate))

Currently translated at 100.0% (67 of 67 strings)

Translation: Habitica/Messages
Translate-URL: https://translate.habitica.com/projects/habitica/messages/en@pirate/

Translated using Weblate (German)

Currently translated at 100.0% (67 of 67 strings)

Translation: Habitica/Messages
Translate-URL: https://translate.habitica.com/projects/habitica/messages/de/

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 (Simplified))

Currently translated at 100.0% (31 of 31 strings)

Translation: Habitica/Maintenance
Translate-URL: https://translate.habitica.com/projects/habitica/maintenance/zh_Hans/

Translated using Weblate (Russian)

Currently translated at 99.4% (173 of 174 strings)

Translation: Habitica/Limited
Translate-URL: https://translate.habitica.com/projects/habitica/limited/ru/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (485 of 485 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (485 of 485 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/zh_Hans/

Translated using Weblate (Russian)

Currently translated at 99.7% (484 of 485 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/ru/

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (485 of 485 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/pt_BR/

Translated using Weblate (French)

Currently translated at 100.0% (485 of 485 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/fr/

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (485 of 485 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/en_GB/

Translated using Weblate (English (Pirate))

Currently translated at 100.0% (485 of 485 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/en@pirate/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (2027 of 2027 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (2027 of 2027 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/zh_Hans/

Translated using Weblate (Russian)

Currently translated at 98.3% (1993 of 2027 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/ru/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (298 of 298 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/zh_Hans/

Translated using Weblate (German)

Currently translated at 100.0% (2027 of 2027 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/de/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (328 of 328 strings)

Translation: Habitica/Front
Translate-URL: https://translate.habitica.com/projects/habitica/front/zh_Hans/

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/

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/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (677 of 677 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (677 of 677 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/zh_Hans/

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 (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 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% (230 of 230 strings)

Translation: Habitica/Character
Translate-URL: https://translate.habitica.com/projects/habitica/character/zh_Hans/

Translated using Weblate (English (Pirate))

Currently translated at 100.0% (355 of 355 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/en@pirate/

Translated using Weblate (English (Pirate))

Currently translated at 100.0% (494 of 494 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/en@pirate/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (65 of 65 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (65 of 65 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/zh_Hans/

Translated using Weblate (English (Pirate))

Currently translated at 100.0% (65 of 65 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/en@pirate/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (211 of 211 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/zh_Hans/

Translated using Weblate (Portuguese)

Currently translated at 95.2% (201 of 211 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/pt/

Translated using Weblate (German)

Currently translated at 100.0% (485 of 485 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/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/
2020-01-16 23:18:07 +01:00
Sabe Jones
1e005a8bc4 4.129.4 2020-01-16 16:11:46 -06:00
Sabe Jones
04960f8ff8 chore(news): Bailey 2020-01-16 16:11:40 -06:00
Sabe Jones
0fd3e42fb2 fix(timetrav): pinning, mobile order 2020-01-16 10:06:36 -06:00
osiris
4fa16b5601 Merge remote-tracking branch 'upstream/develop' into bugfix-npc-style 2020-01-15 12:41:26 +08:00
Melior
bb9582bfc5 Merge branch 'origin/develop' into Weblate. 2020-01-14 22:10:10 +01:00
Melior
de4e4f3c4c Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (229 of 229 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/zh_Hant/

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/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (28 of 28 strings)

Translation: Habitica/Rebirth
Translate-URL: https://translate.habitica.com/projects/habitica/rebirth/zh_Hant/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (171 of 171 strings)

Translation: Habitica/Npc
Translate-URL: https://translate.habitica.com/projects/habitica/npc/zh_Hant/

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (171 of 171 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% (8 of 8 strings)

Translation: Habitica/Overview
Translate-URL: https://translate.habitica.com/projects/habitica/overview/en_GB/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (174 of 174 strings)

Translation: Habitica/Limited
Translate-URL: https://translate.habitica.com/projects/habitica/limited/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (174 of 174 strings)

Translation: Habitica/Limited
Translate-URL: https://translate.habitica.com/projects/habitica/limited/zh_Hans/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (2027 of 2027 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (2027 of 2027 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/zh_Hans/

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (2027 of 2027 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/en_GB/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (298 of 298 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/zh_Hant/

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (298 of 298 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/en_GB/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (328 of 328 strings)

Translation: Habitica/Front
Translate-URL: https://translate.habitica.com/projects/habitica/front/zh_Hant/

Translated using Weblate (Japanese)

Currently translated at 100.0% (328 of 328 strings)

Translation: Habitica/Front
Translate-URL: https://translate.habitica.com/projects/habitica/front/ja/

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (328 of 328 strings)

Translation: Habitica/Front
Translate-URL: https://translate.habitica.com/projects/habitica/front/en_GB/

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (56 of 56 strings)

Translation: Habitica/Faq
Translate-URL: https://translate.habitica.com/projects/habitica/faq/en_GB/

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (63 of 63 strings)

Translation: Habitica/Defaulttasks
Translate-URL: https://translate.habitica.com/projects/habitica/defaulttasks/en_GB/

Translated using Weblate (Danish)

Currently translated at 41.2% (26 of 63 strings)

Translation: Habitica/Defaulttasks
Translate-URL: https://translate.habitica.com/projects/habitica/defaulttasks/da/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (677 of 677 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (677 of 677 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/zh_Hans/

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (677 of 677 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/en_GB/

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/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (355 of 355 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/zh_Hant/

Translated using Weblate (Japanese)

Currently translated at 100.0% (355 of 355 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/ja/

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (70 of 70 strings)

Translation: Habitica/Contrib
Translate-URL: https://translate.habitica.com/projects/habitica/contrib/en_GB/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (230 of 230 strings)

Translation: Habitica/Character
Translate-URL: https://translate.habitica.com/projects/habitica/character/zh_Hant/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (494 of 494 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/zh_Hant/

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (494 of 494 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/en_GB/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (65 of 65 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/zh_Hant/

Translated using Weblate (Japanese)

Currently translated at 100.0% (65 of 65 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/ja/

Translated using Weblate (Danish)

Currently translated at 98.4% (64 of 65 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/da/

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (211 of 211 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/zh_Hant/

Translated using Weblate (Danish)

Currently translated at 96.2% (203 of 211 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/da/

Translated using Weblate (Chinese (Traditional))

Currently translated at 80.0% (52 of 65 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/zh_Hant/

Translated using Weblate (Korean)

Currently translated at 8.8% (29 of 328 strings)

Translation: Habitica/Front
Translate-URL: https://translate.habitica.com/projects/habitica/front/ko/

Translated using Weblate (Vietnamese)

Currently translated at 94.9% (131 of 138 strings)

Translation: Habitica/Quests
Translate-URL: https://translate.habitica.com/projects/habitica/quests/vi/

Translated using Weblate (Latin)

Currently translated at 84.6% (55 of 65 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/la/

Translated using Weblate (Korean)

Currently translated at 100.0% (126 of 126 strings)

Translation: Habitica/Communityguidelines
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/ko/

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (229 of 229 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/en_GB/

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (28 of 28 strings)

Translation: Habitica/Rebirth
Translate-URL: https://translate.habitica.com/projects/habitica/rebirth/en_GB/

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (138 of 138 strings)

Translation: Habitica/Quests
Translate-URL: https://translate.habitica.com/projects/habitica/quests/en_GB/

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (147 of 147 strings)

Translation: Habitica/Pets
Translate-URL: https://translate.habitica.com/projects/habitica/pets/en_GB/

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (171 of 171 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% (66 of 66 strings)

Translation: Habitica/Messages
Translate-URL: https://translate.habitica.com/projects/habitica/messages/en_GB/

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (174 of 174 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% (483 of 483 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/en_GB/

Translated using Weblate (Chinese (Traditional))

Currently translated at 87.0% (1765 of 2027 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/zh_Hant/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (2027 of 2027 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/zh_Hans/

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (2027 of 2027 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/en_GB/

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (298 of 298 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/en_GB/

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (328 of 328 strings)

Translation: Habitica/Front
Translate-URL: https://translate.habitica.com/projects/habitica/front/en_GB/

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (63 of 63 strings)

Translation: Habitica/Defaulttasks
Translate-URL: https://translate.habitica.com/projects/habitica/defaulttasks/en_GB/

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (677 of 677 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/en_GB/

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/

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (355 of 355 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% (230 of 230 strings)

Translation: Habitica/Character
Translate-URL: https://translate.habitica.com/projects/habitica/character/en_GB/

Translated using Weblate (Turkish)

Currently translated at 89.4% (442 of 494 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/tr/

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (494 of 494 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/en_GB/

Translated using Weblate (Chinese (Traditional))

Currently translated at 61.5% (40 of 65 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/zh_Hant/

Translated using Weblate (Turkish)

Currently translated at 23.0% (15 of 65 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/tr/

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (65 of 65 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/en_GB/

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (211 of 211 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/en_GB/

Translated using Weblate (Vietnamese)

Currently translated at 7.4% (11 of 147 strings)

Translation: Habitica/Pets
Translate-URL: https://translate.habitica.com/projects/habitica/pets/vi/

Translated using Weblate (Korean)

Currently translated at 7.9% (26 of 328 strings)

Translation: Habitica/Front
Translate-URL: https://translate.habitica.com/projects/habitica/front/ko/

Translated using Weblate (Korean)

Currently translated at 47.6% (31 of 65 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/ko/

Translated using Weblate (Korean)

Currently translated at 87.3% (310 of 355 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/ko/

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/

Translated using Weblate (Spanish)

Currently translated at 100.0% (174 of 174 strings)

Translation: Habitica/Limited
Translate-URL: https://translate.habitica.com/projects/habitica/limited/es/

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (483 of 483 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/pt_BR/

Translated using Weblate (Portuguese)

Currently translated at 96.2% (465 of 483 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/pt/

Translated using Weblate (Spanish)

Currently translated at 91.7% (1859 of 2027 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/es/

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (298 of 298 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/pt_BR/

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (328 of 328 strings)

Translation: Habitica/Front
Translate-URL: https://translate.habitica.com/projects/habitica/front/pt_BR/

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/

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (211 of 211 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/pt_BR/

Translated using Weblate (Latin)

Currently translated at 75.3% (49 of 65 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/la/

Translated using Weblate (Swedish)

Currently translated at 100.0% (494 of 494 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/sv/
2020-01-14 22:09:48 +01:00
Sabe Jones
fcbc87afc2 Merge branch 'release' into develop 2020-01-14 14:59:58 -06:00
Sabe Jones
6dc1011409 4.129.3 2020-01-14 14:59:37 -06:00
Sabe Jones
e15fdbbe05 fix(nye): no more hats 2020-01-14 14:59:28 -06:00
Matteo Pagliazzi
9510b2345c Merge pull request #11636 from tsukimi2/bugfix-send-pmsg
Fix incorrect error when sending private messages to a player you have blocked (fixes #11612)
2020-01-14 13:24:05 +01:00
Matteo Pagliazzi
615cec6ae0 Merge pull request #11663 from lelandhwu/fix-challenge-category-change
fix bug in which editing challenge will not allow editing categories (fixes #11662)
2020-01-14 13:22:21 +01:00
Matteo Pagliazzi
45668a0ba9 Merge pull request #11683 from youcandanch/local-docker-fixes
Fix issues with local Docker development.
2020-01-14 13:09:32 +01:00
Matteo Pagliazzi
fa9f962e45 Merge pull request #11707 from cvuorinen/11682-quest-invitation-webhook
Quest invitation webhook
2020-01-14 13:06:31 +01:00
Matteo Pagliazzi
4a88659364 Merge pull request #11665 from Alys/flag-modal
show Reset Flag Count button to moderators regardless of post's report status
2020-01-14 13:02:26 +01:00
Matteo Pagliazzi
e4ba2bfc7e Merge pull request #11637 from Xaz16/trigger-vue-reactivity-for-user
Trigger vue reactivity for user
2020-01-14 13:00:07 +01:00
Matteo Pagliazzi
646ac08cb2 Merge pull request #11706 from Kevin-DDR/fixBackground
Set the default year for the background meny to 2020 Fix for  #11703
2020-01-14 12:58:22 +01:00
Matteo Pagliazzi
10348d3daa Merge pull request #11723 from HabitRPG/dependabot/npm_and_yarn/babel/register-7.8.0
build(deps): bump @babel/register from 7.7.7 to 7.8.0
2020-01-13 12:53:08 +01:00
dependabot-preview[bot]
35e5a6ed35 build(deps): bump @babel/register from 7.7.7 to 7.8.0
Bumps [@babel/register](https://github.com/babel/babel) from 7.7.7 to 7.8.0.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.7.7...v7.8.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-13 11:52:41 +00:00
Matteo Pagliazzi
8023914131 Merge pull request #11727 from HabitRPG/dependabot/npm_and_yarn/babel/preset-env-7.8.2
build(deps): bump @babel/preset-env from 7.7.7 to 7.8.2
2020-01-13 12:50:32 +01:00
Matteo Pagliazzi
6ac959b9c6 Merge pull request #11722 from HabitRPG/dependabot/npm_and_yarn/website/client/storybook/vue-5.3.1
build(deps): bump @storybook/vue from 5.2.8 to 5.3.1 in /website/client
2020-01-13 12:50:13 +01:00
dependabot-preview[bot]
011a462d39 build(deps): bump @babel/preset-env from 7.7.7 to 7.8.2
Bumps [@babel/preset-env](https://github.com/babel/babel) from 7.7.7 to 7.8.2.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.7.7...v7.8.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-13 11:50:13 +00:00
Matteo Pagliazzi
484b9f09af Merge pull request #11713 from HabitRPG/dependabot/npm_and_yarn/website/client/storybook/addon-links-5.3.1
build(deps): bump @storybook/addon-links from 5.2.8 to 5.3.1 in /website/client
2020-01-13 12:50:01 +01:00
Matteo Pagliazzi
a916fb8060 Merge pull request #11721 from HabitRPG/dependabot/npm_and_yarn/axios-0.19.1
build(deps-dev): bump axios from 0.19.0 to 0.19.1
2020-01-13 12:49:52 +01:00
Matteo Pagliazzi
91afb90ecc Merge pull request #11734 from HabitRPG/dependabot/npm_and_yarn/superagent-5.2.1
build(deps): bump superagent from 5.1.3 to 5.2.1
2020-01-13 12:49:30 +01:00
dependabot-preview[bot]
0bfa0cc068 build(deps): bump @storybook/addon-links in /website/client
Bumps [@storybook/addon-links](https://github.com/storybookjs/storybook/tree/HEAD/addons/links) from 5.2.8 to 5.3.1.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v5.3.1/addons/links)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-13 11:49:24 +00:00
Matteo Pagliazzi
bcb10382af Merge pull request #11720 from HabitRPG/dependabot/npm_and_yarn/google-cloud/trace-agent-4.2.5
build(deps): bump @google-cloud/trace-agent from 4.2.4 to 4.2.5
2020-01-13 12:49:19 +01:00
dependabot-preview[bot]
188c63cb43 build(deps-dev): bump axios from 0.19.0 to 0.19.1
Bumps [axios](https://github.com/axios/axios) from 0.19.0 to 0.19.1.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/master/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v0.19.0...0.19.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-13 11:49:13 +00:00
dependabot-preview[bot]
3a172a9b8f build(deps): bump @google-cloud/trace-agent from 4.2.4 to 4.2.5
Bumps [@google-cloud/trace-agent](https://github.com/googleapis/cloud-trace-nodejs) from 4.2.4 to 4.2.5.
- [Release notes](https://github.com/googleapis/cloud-trace-nodejs/releases)
- [Changelog](https://github.com/googleapis/cloud-trace-nodejs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/googleapis/cloud-trace-nodejs/compare/v4.2.4...v4.2.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-13 11:49:09 +00:00
dependabot-preview[bot]
376a0efa67 build(deps): bump @storybook/vue from 5.2.8 to 5.3.1 in /website/client
Bumps [@storybook/vue](https://github.com/storybookjs/storybook/tree/HEAD/app/vue) from 5.2.8 to 5.3.1.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v5.3.1/app/vue)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-13 11:49:03 +00:00
Matteo Pagliazzi
fbd68c5ea3 Merge pull request #11725 from HabitRPG/dependabot/npm_and_yarn/monk-7.1.2
build(deps-dev): bump monk from 7.1.1 to 7.1.2
2020-01-13 12:48:57 +01:00
Matteo Pagliazzi
f6f30e8f5d Merge pull request #11724 from HabitRPG/dependabot/npm_and_yarn/website/client/axios-0.19.1
build(deps): bump axios from 0.19.0 to 0.19.1 in /website/client
2020-01-13 12:48:36 +01:00
Matteo Pagliazzi
6c8321c7ec Merge pull request #11726 from HabitRPG/dependabot/npm_and_yarn/website/client/sass-loader-8.0.1
build(deps): bump sass-loader from 8.0.0 to 8.0.1 in /website/client
2020-01-13 12:48:17 +01:00
Matteo Pagliazzi
c7d44a0c7e Merge pull request #11728 from HabitRPG/dependabot/npm_and_yarn/babel/core-7.8.0
build(deps): bump @babel/core from 7.7.7 to 7.8.0
2020-01-13 12:48:05 +01:00
Matteo Pagliazzi
74ae724e33 Merge pull request #11719 from HabitRPG/dependabot/npm_and_yarn/website/client/vue2-perfect-scrollbar-1.3.0
build(deps): bump vue2-perfect-scrollbar from 1.2.4 to 1.3.0 in /website/client
2020-01-13 12:47:47 +01:00
dependabot-preview[bot]
78306fe33d build(deps): bump sass-loader from 8.0.0 to 8.0.1 in /website/client
Bumps [sass-loader](https://github.com/webpack-contrib/sass-loader) from 8.0.0 to 8.0.1.
- [Release notes](https://github.com/webpack-contrib/sass-loader/releases)
- [Changelog](https://github.com/webpack-contrib/sass-loader/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/sass-loader/compare/v8.0.0...v8.0.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-13 11:47:30 +00:00
Matteo Pagliazzi
5c1f215eb5 Merge pull request #11731 from HabitRPG/dependabot/npm_and_yarn/mongoose-5.8.7
build(deps): bump mongoose from 5.8.4 to 5.8.7
2020-01-13 12:46:56 +01:00
Matteo Pagliazzi
c7fd7aefc2 Merge pull request #11712 from HabitRPG/dependabot/npm_and_yarn/website/client/storybook/addon-actions-5.3.1
build(deps): bump @storybook/addon-actions from 5.2.8 to 5.3.1 in /website/client
2020-01-13 12:46:46 +01:00
Matteo Pagliazzi
fe45e62258 Merge pull request #11733 from HabitRPG/dependabot/npm_and_yarn/cookie-session-1.4.0
build(deps): bump cookie-session from 1.3.3 to 1.4.0
2020-01-13 12:46:29 +01:00
dependabot-preview[bot]
c8db6a35f9 build(deps): bump @storybook/addon-actions in /website/client
Bumps [@storybook/addon-actions](https://github.com/storybookjs/storybook/tree/HEAD/addons/actions) from 5.2.8 to 5.3.1.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v5.3.1/addons/actions)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-13 11:46:21 +00:00
Matteo Pagliazzi
9fd4ffbfbf Merge pull request #11732 from HabitRPG/dependabot/npm_and_yarn/amazon-payments-0.2.8
build(deps): bump amazon-payments from 0.2.7 to 0.2.8
2020-01-13 12:46:19 +01:00
dependabot-preview[bot]
14c1bddca2 build(deps): bump axios from 0.19.0 to 0.19.1 in /website/client
Bumps [axios](https://github.com/axios/axios) from 0.19.0 to 0.19.1.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/master/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v0.19.0...0.19.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-13 11:45:44 +00:00
Matteo Pagliazzi
e90d9d9ec4 Merge pull request #11729 from HabitRPG/dependabot/npm_and_yarn/aws-sdk-2.601.0
build(deps): bump aws-sdk from 2.597.0 to 2.601.0
2020-01-13 12:45:24 +01:00
Matteo Pagliazzi
2463287161 Merge pull request #11711 from HabitRPG/dependabot/npm_and_yarn/website/client/sass-1.24.4
build(deps): bump sass from 1.24.2 to 1.24.4 in /website/client
2020-01-13 12:44:46 +01:00
Matteo Pagliazzi
e440a344e3 Merge pull request #11716 from HabitRPG/dependabot/npm_and_yarn/website/client/storybook/addon-knobs-5.3.1
build(deps): bump @storybook/addon-knobs from 5.2.8 to 5.3.1 in /website/client
2020-01-13 12:44:02 +01:00
Matteo Pagliazzi
acec30cb05 Merge pull request #11717 from HabitRPG/dependabot/npm_and_yarn/website/client/hellojs-1.18.4
build(deps): bump hellojs from 1.18.1 to 1.18.4 in /website/client
2020-01-13 12:43:51 +01:00
Matteo Pagliazzi
ee51878c23 Merge pull request #11715 from HabitRPG/dependabot/npm_and_yarn/website/client/storybook/addon-notes-5.3.1
build(deps): bump @storybook/addon-notes from 5.2.8 to 5.3.1 in /website/client
2020-01-13 12:43:38 +01:00
Matteo Pagliazzi
650c9044c8 Merge pull request #11710 from HabitRPG/dependabot/npm_and_yarn/website/client/bootstrap-vue-2.2.0
build(deps): bump bootstrap-vue from 2.1.0 to 2.2.0 in /website/client
2020-01-13 12:43:10 +01:00
Matteo Pagliazzi
1f54b59bc6 Merge pull request #11709 from HabitRPG/dependabot/npm_and_yarn/website/client/core-js-3.6.3
build(deps): bump core-js from 3.6.1 to 3.6.3 in /website/client
2020-01-13 12:42:46 +01:00
dependabot-preview[bot]
4035b148d2 build(deps): bump superagent from 5.1.3 to 5.2.1
Bumps [superagent](https://github.com/visionmedia/superagent) from 5.1.3 to 5.2.1.
- [Release notes](https://github.com/visionmedia/superagent/releases)
- [Changelog](https://github.com/visionmedia/superagent/blob/master/HISTORY.md)
- [Commits](https://github.com/visionmedia/superagent/compare/v5.1.3...v5.2.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-13 08:21:18 +00:00
dependabot-preview[bot]
de5f4cb092 build(deps): bump cookie-session from 1.3.3 to 1.4.0
Bumps [cookie-session](https://github.com/expressjs/cookie-session) from 1.3.3 to 1.4.0.
- [Release notes](https://github.com/expressjs/cookie-session/releases)
- [Changelog](https://github.com/expressjs/cookie-session/blob/master/HISTORY.md)
- [Commits](https://github.com/expressjs/cookie-session/compare/1.3.3...1.4.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-13 08:20:42 +00:00
dependabot-preview[bot]
0af4561e95 build(deps): bump amazon-payments from 0.2.7 to 0.2.8
Bumps [amazon-payments](https://github.com/MadisonReed/amazon-payments) from 0.2.7 to 0.2.8.
- [Release notes](https://github.com/MadisonReed/amazon-payments/releases)
- [Commits](https://github.com/MadisonReed/amazon-payments/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-13 08:19:52 +00:00
dependabot-preview[bot]
a3bbf6a149 build(deps): bump mongoose from 5.8.4 to 5.8.7
Bumps [mongoose](https://github.com/Automattic/mongoose) from 5.8.4 to 5.8.7.
- [Release notes](https://github.com/Automattic/mongoose/releases)
- [Changelog](https://github.com/Automattic/mongoose/blob/master/History.md)
- [Commits](https://github.com/Automattic/mongoose/compare/5.8.4...5.8.7)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-13 08:19:09 +00:00
dependabot-preview[bot]
24ca2cd2de build(deps): bump aws-sdk from 2.597.0 to 2.601.0
Bumps [aws-sdk](https://github.com/aws/aws-sdk-js) from 2.597.0 to 2.601.0.
- [Release notes](https://github.com/aws/aws-sdk-js/releases)
- [Changelog](https://github.com/aws/aws-sdk-js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-js/compare/v2.597.0...v2.601.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-13 08:17:48 +00:00
dependabot-preview[bot]
4f167c6b2e build(deps): bump @babel/core from 7.7.7 to 7.8.0
Bumps [@babel/core](https://github.com/babel/babel) from 7.7.7 to 7.8.0.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.7.7...v7.8.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-13 08:17:02 +00:00
dependabot-preview[bot]
11a2696179 build(deps-dev): bump monk from 7.1.1 to 7.1.2
Bumps [monk](https://github.com/Automattic/monk) from 7.1.1 to 7.1.2.
- [Release notes](https://github.com/Automattic/monk/releases)
- [Changelog](https://github.com/Automattic/monk/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Automattic/monk/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-13 08:15:32 +00:00
dependabot-preview[bot]
c934cf990d build(deps): bump vue2-perfect-scrollbar in /website/client
Bumps [vue2-perfect-scrollbar](https://github.com/mercs600/vue2-perfect-scrollbar) from 1.2.4 to 1.3.0.
- [Release notes](https://github.com/mercs600/vue2-perfect-scrollbar/releases)
- [Commits](https://github.com/mercs600/vue2-perfect-scrollbar/commits/1.3.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-13 08:12:35 +00:00
dependabot-preview[bot]
fdfe76ca16 build(deps): bump hellojs from 1.18.1 to 1.18.4 in /website/client
Bumps [hellojs](https://github.com/MrSwitch/hello.js) from 1.18.1 to 1.18.4.
- [Release notes](https://github.com/MrSwitch/hello.js/releases)
- [Commits](https://github.com/MrSwitch/hello.js/compare/v1.18.1...v1.18.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-13 08:11:33 +00:00
dependabot-preview[bot]
5762f85798 build(deps): bump @storybook/addon-knobs in /website/client
Bumps [@storybook/addon-knobs](https://github.com/storybookjs/storybook/tree/HEAD/addons/knobs) from 5.2.8 to 5.3.1.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v5.3.1/addons/knobs)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-13 08:10:42 +00:00
dependabot-preview[bot]
d1ecb960b0 build(deps): bump @storybook/addon-notes in /website/client
Bumps [@storybook/addon-notes](https://github.com/storybookjs/storybook/tree/HEAD/addons/notes) from 5.2.8 to 5.3.1.
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v5.3.1/addons/notes)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-13 08:09:31 +00:00
dependabot-preview[bot]
47fb821956 build(deps): bump sass from 1.24.2 to 1.24.4 in /website/client
Bumps [sass](https://github.com/sass/dart-sass) from 1.24.2 to 1.24.4.
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.24.2...1.24.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-13 08:04:57 +00:00
dependabot-preview[bot]
d0eb6196d3 build(deps): bump bootstrap-vue from 2.1.0 to 2.2.0 in /website/client
Bumps [bootstrap-vue](https://github.com/bootstrap-vue/bootstrap-vue) from 2.1.0 to 2.2.0.
- [Release notes](https://github.com/bootstrap-vue/bootstrap-vue/releases)
- [Changelog](https://github.com/bootstrap-vue/bootstrap-vue/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/bootstrap-vue/bootstrap-vue/compare/v2.1.0...v2.2.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-13 08:03:56 +00:00
dependabot-preview[bot]
bb50586622 build(deps): bump core-js from 3.6.1 to 3.6.3 in /website/client
Bumps [core-js](https://github.com/zloirock/core-js) from 3.6.1 to 3.6.3.
- [Release notes](https://github.com/zloirock/core-js/releases)
- [Changelog](https://github.com/zloirock/core-js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/zloirock/core-js/compare/v3.6.1...v3.6.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-13 08:02:47 +00:00
Sabe Jones
8b569e2136 PMs rebuild (#11360)
* feat(messages): big PMs refactor

* add private messages route

* move to page

* WIP - header + begin with the sidebar

* extract userLabel + style sidebar + extract converstation item

* correct conversation item style

* toggle switch style

* add contributor / backer to conversation user-label

* fix shadows

* fix the conversations list (ignoring own sent)

* selected conversation label

* faceAvatar component

* fix message / avatar height

* fix message list / empty messages height

* new message padding/styles/functionality - finished sidebar conversation styling -

* fix loading messages + perfect-scrollbar

* fix load more line

* fix loading label

* open new conversation from outside

* if the user doesn't have avatar-data inside the conversation and does not exist anymore, just load/set the user name

* search bar new icon / style

* block using from conversation context-menu

* fix lint

* fix merge / lint

* fix merge

* first separate page

* fix tooltips + full width private message + card max width + more responsive

* separate conversations methods, to prevent circular deps

* update eslint config

* fix open new private message

* remove unneeded close icon + fix toggle-switch layout

* same content height on empty conversations - remove border / box-shadow

* canLoadMore = false

* remove inbox conditions on chat components

* hide footer / fix empty sidebar

* floating shadow

* remove tooltip on selected conversation user + pm always full-size

* show avatar on empty conversation

* disable face-avatar

* fix faceAvatar + story

* fix loading conversation messages while switching the conversation

* refresh private-messages page when you are already on it

* add countbadge knob to change the example

* fix lint

* fix hide tooltip + align header correctly

* disable perfect scroll

* load messages on refresh event

* fix header label + conversation actions not breaking layout on hover

* add gifting banner to the max height calculation

* correct chunk name

Co-authored-by: negue <negue@users.noreply.github.com>
Co-authored-by: Matteo Pagliazzi <matteopagliazzi@gmail.com>
2020-01-12 19:34:40 +01:00
alexthomson1
9bfc76cd20 Merge branch 'develop' into issue-11615 2020-01-12 00:20:13 -07:00
alexthomson1
8bd27b8313 Fixed bug in desktop navigation causing dropdown menu to get stuck until moused over again. 2020-01-11 23:16:24 -07:00
Matteo Pagliazzi
da878dfa1a Disabled auto notification dismiss for received card on click (#11690) 2020-01-11 18:13:47 +01:00
alexthomson1
8abf0dd11d Prevent accidentally closing tasks in edit mode. (#11686) 2020-01-11 18:13:39 +01:00
Carl Vuorinen
a487c708be Add documentation about questActivity and userActivity webhooks 2020-01-11 00:36:45 +02:00
Carl Vuorinen
9258f8ad26 Send questInvited webhooks 2020-01-11 00:32:10 +02:00
Sabe Jones
f47ccfdb6d chore(event): enable winter customizations 2020-01-10 15:32:36 -06:00
Sabe Jones
7faf443197 chore(event): enable winter customizations 2020-01-10 15:32:08 -06:00
Carl Vuorinen
04180fe974 Add integration tests for questActivity webhook 2020-01-10 20:58:21 +02:00
Carl Vuorinen
e6edaca11d Add questInvited option to webhook model 2020-01-10 20:27:50 +02:00
Melior
70894fa41f Merge branch 'origin/develop' into Weblate. 2020-01-09 23:50:41 +01:00
Melior
255b4061b0 Translated using Weblate (Vietnamese)
Currently translated at 4.0% (6 of 147 strings)

Translation: Habitica/Pets
Translate-URL: https://translate.habitica.com/projects/habitica/pets/vi/

Translated using Weblate (Latin)

Currently translated at 66.1% (43 of 65 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/la/

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (2027 of 2027 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/pt_BR/

Translated using Weblate (English (Pirate))

Currently translated at 89.4% (1814 of 2027 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/en@pirate/

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (494 of 494 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/pt_BR/

Translated using Weblate (Russian)

Currently translated at 99.4% (173 of 174 strings)

Translation: Habitica/Limited
Translate-URL: https://translate.habitica.com/projects/habitica/limited/ru/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (2027 of 2027 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/zh_Hans/

Translated using Weblate (Russian)

Currently translated at 98.3% (1993 of 2027 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/ru/

Translated using Weblate (French)

Currently translated at 100.0% (2027 of 2027 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/fr/

Translated using Weblate (German)

Currently translated at 100.0% (2027 of 2027 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/de/

Translated using Weblate (German)

Currently translated at 100.0% (298 of 298 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/de/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (494 of 494 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/zh_Hans/

Translated using Weblate (Russian)

Currently translated at 99.3% (491 of 494 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/ru/

Translated using Weblate (French)

Currently translated at 100.0% (494 of 494 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/fr/

Translated using Weblate (German)

Currently translated at 100.0% (494 of 494 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/de/

Translated using Weblate (German)

Currently translated at 100.0% (494 of 494 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/de/

Translated using Weblate (German)

Currently translated at 100.0% (494 of 494 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/de/
2020-01-09 23:50:14 +01:00
Sabe Jones
41c4aa5f71 4.129.2 2020-01-09 16:44:12 -06:00
Sabe Jones
38b61030df Merge branch 'develop' into release 2020-01-09 16:44:07 -06:00
Sabe Jones
c1a4c03883 fix(outage): emails warning 2020-01-09 16:43:18 -06:00
Sabe Jones
59fb9f1c7a feat(timetrav): implement bgs in avatar modal 2020-01-09 10:26:36 -06:00
Sabe Jones
0f4a5ebe6c Merge branch 'release' into sabrecat/timetrav-bgs 2020-01-09 09:59:09 -06:00
Kevin-DDR
a3277eeea3 Set the default year ofr the background meny to 2020 2020-01-09 08:59:51 +01:00
Sabe Jones
2c75e0bd49 Merge branch 'release' into develop 2020-01-08 11:13:19 -06:00
osiris
98e0e96494 Implemented rework suggestion by adding backer to group aggregation 2020-01-08 17:17:48 +08:00
osiris
2427743d0f Fix bug in NPC style display 2020-01-08 16:35:02 +08:00
Melior
4da1ed92bd Merge branch 'origin/develop' into Weblate. 2020-01-07 19:32:29 +01:00
Melior
16d2356558 Translated using Weblate (Spanish (Latin America))
Currently translated at 71.4% (45 of 63 strings)

Translation: Habitica/Defaulttasks
Translate-URL: https://translate.habitica.com/projects/habitica/defaulttasks/es_419/

Translated using Weblate (Spanish (Latin America))

Currently translated at 100.0% (65 of 65 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/es_419/

Translated using Weblate (Spanish)

Currently translated at 90.2% (1822 of 2019 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/es/

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (134 of 134 strings)

Translation: Habitica/Challenge
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/pt_BR/

Translated using Weblate (Hebrew)

Currently translated at 13.8% (9 of 65 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/he/

Translated using Weblate (Spanish)

Currently translated at 98.4% (64 of 65 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/es/

Translated using Weblate (Vietnamese)

Currently translated at 3.3% (11 of 328 strings)

Translation: Habitica/Front
Translate-URL: https://translate.habitica.com/projects/habitica/front/vi/

Translated using Weblate (Vietnamese)

Currently translated at 100.0% (12 of 12 strings)

Translation: Habitica/Merch
Translate-URL: https://translate.habitica.com/projects/habitica/merch/vi/

Translated using Weblate (Latin)

Currently translated at 86.4% (1745 of 2019 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/la/

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 (Chinese (Simplified))

Currently translated at 100.0% (138 of 138 strings)

Translation: Habitica/Quests
Translate-URL: https://translate.habitica.com/projects/habitica/quests/zh_Hans/

Translated using Weblate (Polish)

Currently translated at 61.9% (39 of 63 strings)

Translation: Habitica/Defaulttasks
Translate-URL: https://translate.habitica.com/projects/habitica/defaulttasks/pl/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (677 of 677 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/zh_Hans/

Translated using Weblate (Polish)

Currently translated at 44.6% (29 of 65 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/pl/

Translated using Weblate (Spanish)

Currently translated at 98.4% (64 of 65 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/es/

Translated using Weblate (Swedish)

Currently translated at 100.0% (229 of 229 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/sv/

Translated using Weblate (Russian)

Currently translated at 100.0% (229 of 229 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/ru/

Translated using Weblate (Polish)

Currently translated at 98.6% (226 of 229 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/pl/

Translated using Weblate (Czech)

Currently translated at 98.2% (225 of 229 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/cs/

Translated using Weblate (Czech)

Currently translated at 100.0% (28 of 28 strings)

Translation: Habitica/Rebirth
Translate-URL: https://translate.habitica.com/projects/habitica/rebirth/cs/

Translated using Weblate (Russian)

Currently translated at 100.0% (171 of 171 strings)

Translation: Habitica/Npc
Translate-URL: https://translate.habitica.com/projects/habitica/npc/ru/

Translated using Weblate (Czech)

Currently translated at 100.0% (171 of 171 strings)

Translation: Habitica/Npc
Translate-URL: https://translate.habitica.com/projects/habitica/npc/cs/

Translated using Weblate (Czech)

Currently translated at 98.4% (65 of 66 strings)

Translation: Habitica/Messages
Translate-URL: https://translate.habitica.com/projects/habitica/messages/cs/

Translated using Weblate (Czech)

Currently translated at 97.1% (169 of 174 strings)

Translation: Habitica/Limited
Translate-URL: https://translate.habitica.com/projects/habitica/limited/cs/

Translated using Weblate (Swedish)

Currently translated at 90.4% (1826 of 2019 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/sv/

Translated using Weblate (Czech)

Currently translated at 89.7% (1812 of 2019 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/cs/

Translated using Weblate (Czech)

Currently translated at 99.3% (296 of 298 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/cs/

Translated using Weblate (Russian)

Currently translated at 100.0% (328 of 328 strings)

Translation: Habitica/Front
Translate-URL: https://translate.habitica.com/projects/habitica/front/ru/

Translated using Weblate (Czech)

Currently translated at 100.0% (328 of 328 strings)

Translation: Habitica/Front
Translate-URL: https://translate.habitica.com/projects/habitica/front/cs/

Translated using Weblate (Czech)

Currently translated at 96.8% (61 of 63 strings)

Translation: Habitica/Defaulttasks
Translate-URL: https://translate.habitica.com/projects/habitica/defaulttasks/cs/

Translated using Weblate (Czech)

Currently translated at 91.1% (617 of 677 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/cs/

Translated using Weblate (Czech)

Currently translated at 100.0% (355 of 355 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/cs/

Translated using Weblate (Czech)

Currently translated at 95.4% (465 of 487 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/cs/

Translated using Weblate (Czech)

Currently translated at 87.6% (57 of 65 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/cs/

Translated using Weblate (Czech)

Currently translated at 99.0% (209 of 211 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/cs/

Translated using Weblate (Vietnamese)

Currently translated at 100.0% (126 of 126 strings)

Translation: Habitica/Communityguidelines
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/vi/

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (229 of 229 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/pt_BR/

Translated using Weblate (French)

Currently translated at 100.0% (229 of 229 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/fr/

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (138 of 138 strings)

Translation: Habitica/Quests
Translate-URL: https://translate.habitica.com/projects/habitica/quests/pt_BR/

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (483 of 483 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/pt_BR/

Translated using Weblate (Russian)

Currently translated at 98.4% (1988 of 2019 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/ru/

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (2019 of 2019 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/pt_BR/

Translated using Weblate (German)

Currently translated at 100.0% (2019 of 2019 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/de/

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (677 of 677 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/pt_BR/

Translated using Weblate (French)

Currently translated at 100.0% (677 of 677 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/fr/

Translated using Weblate (French)

Currently translated at 100.0% (211 of 211 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/fr/

Translated using Weblate (German)

Currently translated at 100.0% (65 of 65 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/de/
2020-01-07 19:32:14 +01:00
Sabe Jones
fe9af263dd Merge branch 'release' into develop 2020-01-07 11:48:09 -06:00
dependabot-preview[bot]
3fa8ba1a7d build(deps): bump inspectpack from 4.2.2 to 4.3.0 in /website/client (#11692)
Bumps [inspectpack](https://github.com/FormidableLabs/inspectpack) from 4.2.2 to 4.3.0.
- [Release notes](https://github.com/FormidableLabs/inspectpack/releases)
- [Changelog](https://github.com/FormidableLabs/inspectpack/blob/master/HISTORY.md)
- [Commits](https://github.com/FormidableLabs/inspectpack/compare/v4.2.2...v4.3.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-07 11:04:12 +01:00
dependabot-preview[bot]
b6d461565c build(deps): bump sass from 1.24.0 to 1.24.2 in /website/client (#11691)
Bumps [sass](https://github.com/sass/dart-sass) from 1.24.0 to 1.24.2.
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.24.0...1.24.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-07 11:04:00 +01:00
dependabot-preview[bot]
270ec241b3 build(deps): bump eslint-plugin-vue in /website/client (#11694)
Bumps [eslint-plugin-vue](https://github.com/vuejs/eslint-plugin-vue) from 6.1.1 to 6.1.2.
- [Release notes](https://github.com/vuejs/eslint-plugin-vue/releases)
- [Commits](https://github.com/vuejs/eslint-plugin-vue/compare/v6.1.1...v6.1.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-07 11:03:36 +01:00
dependabot-preview[bot]
4ae49e6e1b build(deps): bump mongoose from 5.8.3 to 5.8.4 (#11695)
Bumps [mongoose](https://github.com/Automattic/mongoose) from 5.8.3 to 5.8.4.
- [Release notes](https://github.com/Automattic/mongoose/releases)
- [Changelog](https://github.com/Automattic/mongoose/blob/master/History.md)
- [Commits](https://github.com/Automattic/mongoose/compare/5.8.3...5.8.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-07 11:03:22 +01:00
dependabot-preview[bot]
6b6afa9004 build(deps): bump aws-sdk from 2.596.0 to 2.597.0 (#11698)
Bumps [aws-sdk](https://github.com/aws/aws-sdk-js) from 2.596.0 to 2.597.0.
- [Release notes](https://github.com/aws/aws-sdk-js/releases)
- [Changelog](https://github.com/aws/aws-sdk-js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-js/compare/v2.596.0...v2.597.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-07 11:03:10 +01:00
dependabot-preview[bot]
4550cfb02e build(deps): bump stripe from 7.14.0 to 7.15.0 (#11700)
Bumps [stripe](https://github.com/stripe/stripe-node) from 7.14.0 to 7.15.0.
- [Release notes](https://github.com/stripe/stripe-node/releases)
- [Changelog](https://github.com/stripe/stripe-node/blob/master/CHANGELOG.md)
- [Commits](https://github.com/stripe/stripe-node/compare/v7.14.0...v7.15.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-07 11:02:40 +01:00
Sabe Jones
d7d5d7e85a Merge branch 'release' into develop 2020-01-06 12:13:00 -06:00
Sabe Jones
a550e32fd3 fix(bgs): include TT required field 2020-01-06 11:45:18 -06:00
Kevin-DDR
ef4e79f520 Disabled auto notification dismiss for received card on click 2020-01-04 11:44:24 +01:00
Sabe Jones
f51c12437d fix(timetrav): add strings 2020-01-03 15:29:27 -06:00
Sabe Jones
e8edc9669a WIP(timetrav): buy BG with Hourglass 2020-01-03 12:50:13 -06:00
alexthomson1
8fd7e1cd00 Prevent accidentally closing tasks in edit mode. 2020-01-01 14:01:21 -07:00
Melior
d8f4f74818 Merge branch 'origin/develop' into Weblate. 2020-01-01 21:50:56 +01:00
Melior
9265b4f4a4 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (229 of 229 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/zh_Hans/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (2019 of 2019 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/zh_Hans/

Translated using Weblate (French)

Currently translated at 100.0% (2019 of 2019 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/fr/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (677 of 677 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/zh_Hans/

Translated using Weblate (Swedish)

Currently translated at 93.5% (633 of 677 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/sv/

Translated using Weblate (Romanian)

Currently translated at 96.0% (121 of 126 strings)

Translation: Habitica/Communityguidelines
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/ro/

Translated using Weblate (Swedish)

Currently translated at 100.0% (487 of 487 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/sv/

Merge branch 'origin/develop' into Weblate.

Translated using Weblate (German)

Currently translated at 100.0% (229 of 229 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/de/

Translated using Weblate (Swedish)

Currently translated at 90.3% (1824 of 2019 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/sv/

Translated using Weblate (English (Pirate))

Currently translated at 88.8% (1794 of 2019 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/en@pirate/

Translated using Weblate (German)

Currently translated at 100.0% (2019 of 2019 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/de/

Translated using Weblate (German)

Currently translated at 100.0% (677 of 677 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/de/

Translated using Weblate (English (Pirate))

Currently translated at 100.0% (65 of 65 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/en@pirate/
2020-01-01 21:50:41 +01:00
Sabe Jones
44bb304119 Merge branch 'release' into develop 2020-01-01 14:45:55 -06:00
Sabe Jones
9b29367048 Merge branch 'release' into develop 2019-12-31 17:19:01 -06:00
Alex Dancho
e47845535a Fix issues with local Docker development. 2019-12-31 11:47:32 -05:00
Melior
f4dbb4a8f1 Merge branch 'origin/develop' into Weblate. 2019-12-31 13:55:54 +01:00
Sabe Jones
df72d240fd Merge branch 'release' into develop 2019-12-31 06:52:22 -06:00
Melior
354cc9b54a Translated using Weblate (Latin)
Currently translated at 29.9% (44 of 147 strings)

Translation: Habitica/Pets
Translate-URL: https://translate.habitica.com/projects/habitica/pets/la/

Translated using Weblate (Vietnamese)

Currently translated at 100.0% (211 of 211 strings)

Translation: Habitica/Tasks
Translate-URL: https://translate.habitica.com/projects/habitica/tasks/vi/

Translated using Weblate (Swedish)

Currently translated at 100.0% (228 of 228 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/sv/

Translated using Weblate (Swedish)

Currently translated at 100.0% (57 of 57 strings)

Translation: Habitica/Spells
Translate-URL: https://translate.habitica.com/projects/habitica/spells/sv/

Translated using Weblate (Swedish)

Currently translated at 100.0% (298 of 298 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/sv/

Translated using Weblate (Swedish)

Currently translated at 100.0% (65 of 65 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/sv/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (138 of 138 strings)

Translation: Habitica/Quests
Translate-URL: https://translate.habitica.com/projects/habitica/quests/zh_Hans/

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/

Translated using Weblate (Russian)

Currently translated at 100.0% (298 of 298 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/ru/

Translated using Weblate (German)

Currently translated at 100.0% (298 of 298 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/de/

Translated using Weblate (Latin)

Currently translated at 100.0% (134 of 134 strings)

Translation: Habitica/Challenge
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/la/

Translated using Weblate (Latin)

Currently translated at 100.0% (8 of 8 strings)

Translation: Habitica/Overview
Translate-URL: https://translate.habitica.com/projects/habitica/overview/la/

Translated using Weblate (Latin)

Currently translated at 100.0% (36 of 36 strings)

Translation: Habitica/Loadingscreentips
Translate-URL: https://translate.habitica.com/projects/habitica/loadingscreentips/la/

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (228 of 228 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/pt_BR/

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (171 of 171 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% (483 of 483 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% (677 of 677 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/pt_BR/

Translated using Weblate (French)

Currently translated at 100.0% (211 of 211 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/fr/
2019-12-31 13:10:31 +01:00
nikosmonaut
8c6938022c Add test for leaving group
After leaving group the previous associated tag should no more be bound
to this group.
2019-12-30 15:22:11 +01:00
dependabot-preview[bot]
9b778f73ef build(deps-dev): bump sinon-chai from 3.3.0 to 3.4.0 (#11677)
Bumps [sinon-chai](https://github.com/domenic/sinon-chai) from 3.3.0 to 3.4.0.
- [Release notes](https://github.com/domenic/sinon-chai/releases)
- [Changelog](https://github.com/domenic/sinon-chai/blob/master/CHANGELOG.md)
- [Commits](https://github.com/domenic/sinon-chai/compare/3.3.0...3.4.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-30 11:42:35 +01:00
dependabot-preview[bot]
bd571bb359 build(deps): bump aws-sdk from 2.595.0 to 2.596.0 (#11679)
Bumps [aws-sdk](https://github.com/aws/aws-sdk-js) from 2.595.0 to 2.596.0.
- [Release notes](https://github.com/aws/aws-sdk-js/releases)
- [Changelog](https://github.com/aws/aws-sdk-js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-js/compare/v2.595.0...v2.596.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-30 11:42:16 +01:00
dependabot-preview[bot]
f44fe3a4df build(deps): bump csv-stringify from 5.3.5 to 5.3.6 (#11680)
Bumps [csv-stringify](https://github.com/adaltas/node-csv-stringify) from 5.3.5 to 5.3.6.
- [Release notes](https://github.com/adaltas/node-csv-stringify/releases)
- [Changelog](https://github.com/adaltas/node-csv-stringify/blob/master/CHANGELOG.md)
- [Commits](https://github.com/adaltas/node-csv-stringify/compare/v5.3.5...v5.3.6)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-30 11:42:02 +01:00
dependabot-preview[bot]
6e815ea267 build(deps): bump mongoose from 5.8.2 to 5.8.3 (#11676)
Bumps [mongoose](https://github.com/Automattic/mongoose) from 5.8.2 to 5.8.3.
- [Release notes](https://github.com/Automattic/mongoose/releases)
- [Changelog](https://github.com/Automattic/mongoose/blob/master/History.md)
- [Commits](https://github.com/Automattic/mongoose/compare/5.8.2...5.8.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-30 11:41:38 +01:00
dependabot-preview[bot]
e282c43960 build(deps): bump @vue/cli-plugin-eslint in /website/client (#11670)
Bumps [@vue/cli-plugin-eslint](https://github.com/vuejs/vue-cli/tree/HEAD/packages/@vue/cli-plugin-eslint) from 4.1.1 to 4.1.2.
- [Release notes](https://github.com/vuejs/vue-cli/releases)
- [Changelog](https://github.com/vuejs/vue-cli/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/vuejs/vue-cli/commits/v4.1.2/packages/@vue/cli-plugin-eslint)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-30 11:40:38 +01:00
dependabot-preview[bot]
9f2fdda7e9 build(deps): bump @vue/cli-plugin-unit-mocha in /website/client (#11669)
Bumps [@vue/cli-plugin-unit-mocha](https://github.com/vuejs/vue-cli/tree/HEAD/packages/@vue/cli-plugin-unit-mocha) from 4.1.1 to 4.1.2.
- [Release notes](https://github.com/vuejs/vue-cli/releases)
- [Changelog](https://github.com/vuejs/vue-cli/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/vuejs/vue-cli/commits/v4.1.2/packages/@vue/cli-plugin-unit-mocha)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-30 11:38:31 +01:00
dependabot-preview[bot]
58304bebf4 build(deps): bump webpack from 4.41.4 to 4.41.5 in /website/client (#11673)
Bumps [webpack](https://github.com/webpack/webpack) from 4.41.4 to 4.41.5.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v4.41.4...v4.41.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-30 11:38:04 +01:00
dependabot-preview[bot]
9232b9351b build(deps): bump @vue/cli-plugin-babel in /website/client (#11668)
Bumps [@vue/cli-plugin-babel](https://github.com/vuejs/vue-cli/tree/HEAD/packages/@vue/cli-plugin-babel) from 4.1.1 to 4.1.2.
- [Release notes](https://github.com/vuejs/vue-cli/releases)
- [Changelog](https://github.com/vuejs/vue-cli/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/vuejs/vue-cli/commits/v4.1.2/packages/@vue/cli-plugin-babel)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-30 11:37:35 +01:00
dependabot-preview[bot]
25b23e118f build(deps): bump core-js from 3.6.0 to 3.6.1 in /website/client (#11672)
Bumps [core-js](https://github.com/zloirock/core-js) from 3.6.0 to 3.6.1.
- [Release notes](https://github.com/zloirock/core-js/releases)
- [Changelog](https://github.com/zloirock/core-js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/zloirock/core-js/compare/v3.6.0...v3.6.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-30 11:37:19 +01:00
dependabot-preview[bot]
c16795eadf build(deps): bump eslint-plugin-vue in /website/client (#11671)
Bumps [eslint-plugin-vue](https://github.com/vuejs/eslint-plugin-vue) from 6.0.1 to 6.1.1.
- [Release notes](https://github.com/vuejs/eslint-plugin-vue/releases)
- [Commits](https://github.com/vuejs/eslint-plugin-vue/compare/v6.0.1...v6.1.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-30 11:37:09 +01:00
dependabot-preview[bot]
a6e1745b32 build(deps): bump @vue/cli-service in /website/client (#11667)
Bumps [@vue/cli-service](https://github.com/vuejs/vue-cli/tree/HEAD/packages/@vue/cli-service) from 4.1.1 to 4.1.2.
- [Release notes](https://github.com/vuejs/vue-cli/releases)
- [Changelog](https://github.com/vuejs/vue-cli/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/vuejs/vue-cli/commits/v4.1.2/packages/@vue/cli-service)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-30 11:36:25 +01:00
dependabot-preview[bot]
a0a3801dab build(deps): bump @vue/cli-plugin-router in /website/client (#11666)
Bumps [@vue/cli-plugin-router](https://github.com/vuejs/vue-cli/tree/HEAD/packages/@vue/cli-plugin-router) from 4.1.1 to 4.1.2.
- [Release notes](https://github.com/vuejs/vue-cli/releases)
- [Changelog](https://github.com/vuejs/vue-cli/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/vuejs/vue-cli/commits/v4.1.2/packages/@vue/cli-plugin-router)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-30 11:35:56 +01:00
Xaz16
2c65b3a6a3 Fix: remove unnecessary reassigment 2019-12-29 20:58:10 +03:00
Alys
4f084d330d show Reset Flag Count button to moderators regardless of post's flag status
This allows a moderator to flag a post then immediately unflag it,
without needing to re-fetch messages in between.
2019-12-28 15:50:26 +10:00
Melior
0fd0a29a4d Merge branch 'origin/develop' into Weblate. 2019-12-26 21:25:35 +01:00
Melior
c7ae8dd531 Translated using Weblate (Latin)
Currently translated at 100.0% (36 of 36 strings)

Translation: Habitica/Loadingscreentips
Translate-URL: https://translate.habitica.com/projects/habitica/loadingscreentips/la/

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (138 of 138 strings)

Translation: Habitica/Quests
Translate-URL: https://translate.habitica.com/projects/habitica/quests/pt_BR/

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/

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/

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (483 of 483 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% (2013 of 2013 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% (298 of 298 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/pt_BR/

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (328 of 328 strings)

Translation: Habitica/Front
Translate-URL: https://translate.habitica.com/projects/habitica/front/pt_BR/

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/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (677 of 677 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/zh_Hans/

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/

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (70 of 70 strings)

Translation: Habitica/Contrib
Translate-URL: https://translate.habitica.com/projects/habitica/contrib/pt_BR/

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (230 of 230 strings)

Translation: Habitica/Character
Translate-URL: https://translate.habitica.com/projects/habitica/character/pt_BR/

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (134 of 134 strings)

Translation: Habitica/Challenge
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/pt_BR/

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (211 of 211 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/pt_BR/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (138 of 138 strings)

Translation: Habitica/Quests
Translate-URL: https://translate.habitica.com/projects/habitica/quests/zh_Hans/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (138 of 138 strings)

Translation: Habitica/Quests
Translate-URL: https://translate.habitica.com/projects/habitica/quests/zh_Hans/

Translated using Weblate (French)

Currently translated at 100.0% (138 of 138 strings)

Translation: Habitica/Quests
Translate-URL: https://translate.habitica.com/projects/habitica/quests/fr/

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (2013 of 2013 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/pt_BR/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (298 of 298 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/zh_Hans/

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (298 of 298 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/pt_BR/

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (677 of 677 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/pt_BR/

Translated using Weblate (French)

Currently translated at 100.0% (677 of 677 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/fr/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (211 of 211 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/zh_Hans/

Translated using Weblate (Latin)

Currently translated at 26.5% (39 of 147 strings)

Translation: Habitica/Pets
Translate-URL: https://translate.habitica.com/projects/habitica/pets/la/

Translated using Weblate (Latin)

Currently translated at 100.0% (134 of 134 strings)

Translation: Habitica/Challenge
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/la/

Translated using Weblate (Latin)

Currently translated at 89.5% (436 of 487 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/la/

Translated using Weblate (Latin)

Currently translated at 100.0% (36 of 36 strings)

Translation: Habitica/Loadingscreentips
Translate-URL: https://translate.habitica.com/projects/habitica/loadingscreentips/la/

Translated using Weblate (Latin)

Currently translated at 86.5% (1742 of 2013 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/la/

Translated using Weblate (Latin)

Currently translated at 95.7% (202 of 211 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/la/

Translated using Weblate (French)

Currently translated at 100.0% (138 of 138 strings)

Translation: Habitica/Quests
Translate-URL: https://translate.habitica.com/projects/habitica/quests/fr/

Translated using Weblate (German)

Currently translated at 100.0% (171 of 171 strings)

Translation: Habitica/Npc
Translate-URL: https://translate.habitica.com/projects/habitica/npc/de/

Translated using Weblate (Russian)

Currently translated at 98.8% (172 of 174 strings)

Translation: Habitica/Limited
Translate-URL: https://translate.habitica.com/projects/habitica/limited/ru/

Translated using Weblate (Spanish)

Currently translated at 97.1% (169 of 174 strings)

Translation: Habitica/Limited
Translate-URL: https://translate.habitica.com/projects/habitica/limited/es/

Translated using Weblate (Russian)

Currently translated at 98.7% (1988 of 2013 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/ru/

Translated using Weblate (Spanish)

Currently translated at 90.5% (1822 of 2013 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/es/

Translated using Weblate (German)

Currently translated at 99.9% (2011 of 2013 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/de/

Translated using Weblate (Russian)

Currently translated at 99.6% (297 of 298 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/ru/

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 (German)

Currently translated at 100.0% (677 of 677 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/de/

Translated using Weblate (Russian)

Currently translated at 100.0% (355 of 355 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/ru/

Translated using Weblate (Spanish)

Currently translated at 100.0% (355 of 355 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/es/

Translated using Weblate (Russian)

Currently translated at 64.6% (42 of 65 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/ru/

Translated using Weblate (Spanish)

Currently translated at 92.3% (60 of 65 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/es/

Translated using Weblate (German)

Currently translated at 100.0% (65 of 65 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/de/

Translated using Weblate (Russian)

Currently translated at 100.0% (211 of 211 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/ru/
2019-12-26 21:23:13 +01:00
Sabe Jones
3ba8b04962 Merge branch 'release' into develop 2019-12-26 14:21:06 -06:00
Xaz16
4b4cc61031 Fix: remove unnecessary reassignments 2019-12-26 22:47:14 +03:00
Leland Wu
10bcb39b32 remove creating condition in challengeModal when selectingCategory 2019-12-24 22:53:01 -05:00
Melior
33b13a86da Merge branch 'origin/develop' into Weblate. 2019-12-23 21:29:05 +01:00
Melior
b40be0b3f0 Translated using Weblate (Vietnamese)
Currently translated at 3.0% (10 of 328 strings)

Translation: Habitica/Front
Translate-URL: https://translate.habitica.com/projects/habitica/front/vi/

Translated using Weblate (Latin)

Currently translated at 100.0% (355 of 355 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/la/

Translated using Weblate (Latin)

Currently translated at 89.5% (436 of 487 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/la/

Translated using Weblate (Latin)

Currently translated at 93.9% (635 of 676 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/la/

Translated using Weblate (French)

Currently translated at 100.0% (138 of 138 strings)

Translation: Habitica/Quests
Translate-URL: https://translate.habitica.com/projects/habitica/quests/fr/

Translated using Weblate (French)

Currently translated at 100.0% (2013 of 2013 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/fr/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (676 of 676 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% (230 of 230 strings)

Translation: Habitica/Character
Translate-URL: https://translate.habitica.com/projects/habitica/character/zh_Hans/

Translated using Weblate (Latin)

Currently translated at 100.0% (355 of 355 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/la/

Translated using Weblate (Latin)

Currently translated at 94.7% (162 of 171 strings)

Translation: Habitica/Npc
Translate-URL: https://translate.habitica.com/projects/habitica/npc/la/

Translated using Weblate (Latin)

Currently translated at 98.6% (227 of 230 strings)

Translation: Habitica/Character
Translate-URL: https://translate.habitica.com/projects/habitica/character/la/

Translated using Weblate (Latin)

Currently translated at 100.0% (134 of 134 strings)

Translation: Habitica/Challenge
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/la/

Translated using Weblate (Latin)

Currently translated at 100.0% (211 of 211 strings)

Translation: Habitica/Tasks
Translate-URL: https://translate.habitica.com/projects/habitica/tasks/la/

Translated using Weblate (Latin)

Currently translated at 100.0% (28 of 28 strings)

Translation: Habitica/Rebirth
Translate-URL: https://translate.habitica.com/projects/habitica/rebirth/la/

Translated using Weblate (Latin)

Currently translated at 94.0% (636 of 676 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/la/

Translated using Weblate (Filipino)

Currently translated at 23.0% (15 of 65 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/fil/

Translated using Weblate (Latin)

Currently translated at 96.9% (64 of 66 strings)

Translation: Habitica/Messages
Translate-URL: https://translate.habitica.com/projects/habitica/messages/la/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (138 of 138 strings)

Translation: Habitica/Quests
Translate-URL: https://translate.habitica.com/projects/habitica/quests/zh_Hans/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (147 of 147 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% (171 of 171 strings)

Translation: Habitica/Npc
Translate-URL: https://translate.habitica.com/projects/habitica/npc/zh_Hans/

Translated using Weblate (French)

Currently translated at 100.0% (171 of 171 strings)

Translation: Habitica/Npc
Translate-URL: https://translate.habitica.com/projects/habitica/npc/fr/

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/

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/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (31 of 31 strings)

Translation: Habitica/Maintenance
Translate-URL: https://translate.habitica.com/projects/habitica/maintenance/zh_Hans/

Translated using Weblate (French)

Currently translated at 100.0% (174 of 174 strings)

Translation: Habitica/Limited
Translate-URL: https://translate.habitica.com/projects/habitica/limited/fr/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (483 of 483 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% (2013 of 2013 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/zh_Hans/

Translated using Weblate (French)

Currently translated at 99.6% (2006 of 2013 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/fr/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (298 of 298 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/zh_Hans/

Translated using Weblate (French)

Currently translated at 100.0% (298 of 298 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/fr/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (328 of 328 strings)

Translation: Habitica/Front
Translate-URL: https://translate.habitica.com/projects/habitica/front/zh_Hans/

Translated using Weblate (French)

Currently translated at 100.0% (328 of 328 strings)

Translation: Habitica/Front
Translate-URL: https://translate.habitica.com/projects/habitica/front/fr/

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/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (676 of 676 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% (126 of 126 strings)

Translation: Habitica/Communityguidelines
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/zh_Hans/

Translated using Weblate (French)

Currently translated at 100.0% (355 of 355 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/fr/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (65 of 65 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/zh_Hans/

Translated using Weblate (Spanish)

Currently translated at 78.4% (51 of 65 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/es/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (211 of 211 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/zh_Hans/

Translated using Weblate (Latin)

Currently translated at 25.1% (37 of 147 strings)

Translation: Habitica/Pets
Translate-URL: https://translate.habitica.com/projects/habitica/pets/la/

Translated using Weblate (Latin)

Currently translated at 100.0% (57 of 57 strings)

Translation: Habitica/Spells
Translate-URL: https://translate.habitica.com/projects/habitica/spells/la/

Translated using Weblate (Latin)

Currently translated at 94.7% (162 of 171 strings)

Translation: Habitica/Npc
Translate-URL: https://translate.habitica.com/projects/habitica/npc/la/

Translated using Weblate (Latin)

Currently translated at 100.0% (56 of 56 strings)

Translation: Habitica/Faq
Translate-URL: https://translate.habitica.com/projects/habitica/faq/la/

Translated using Weblate (Latin)

Currently translated at 98.6% (227 of 230 strings)

Translation: Habitica/Character
Translate-URL: https://translate.habitica.com/projects/habitica/character/la/

Translated using Weblate (Latin)

Currently translated at 100.0% (28 of 28 strings)

Translation: Habitica/Rebirth
Translate-URL: https://translate.habitica.com/projects/habitica/rebirth/la/

Translated using Weblate (Latin)

Currently translated at 92.0% (127 of 138 strings)

Translation: Habitica/Quests
Translate-URL: https://translate.habitica.com/projects/habitica/quests/la/

Translated using Weblate (Latin)

Currently translated at 100.0% (8 of 8 strings)

Translation: Habitica/Overview
Translate-URL: https://translate.habitica.com/projects/habitica/overview/la/

Translated using Weblate (Vietnamese)

Currently translated at 100.0% (126 of 126 strings)

Translation: Habitica/Communityguidelines
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/vi/

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 (Simplified))

Currently translated at 100.0% (171 of 171 strings)

Translation: Habitica/Npc
Translate-URL: https://translate.habitica.com/projects/habitica/npc/zh_Hans/

Translated using Weblate (Spanish (Latin America))

Currently translated at 75.3% (49 of 65 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/es_419/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (174 of 174 strings)

Translation: Habitica/Limited
Translate-URL: https://translate.habitica.com/projects/habitica/limited/zh_Hans/

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (174 of 174 strings)

Translation: Habitica/Limited
Translate-URL: https://translate.habitica.com/projects/habitica/limited/pt_BR/

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/

Translated using Weblate (German)

Currently translated at 100.0% (174 of 174 strings)

Translation: Habitica/Limited
Translate-URL: https://translate.habitica.com/projects/habitica/limited/de/

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (483 of 483 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/pt_BR/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (2013 of 2013 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% (2013 of 2013 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/zh_Hans/

Translated using Weblate (Portuguese (Brazil))

Currently translated at 99.9% (2012 of 2013 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/pt_BR/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (298 of 298 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/zh_Hans/

Translated using Weblate (German)

Currently translated at 99.4% (2001 of 2013 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/de/

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (298 of 298 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/pt_BR/

Translated using Weblate (German)

Currently translated at 99.6% (297 of 298 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/de/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (328 of 328 strings)

Translation: Habitica/Front
Translate-URL: https://translate.habitica.com/projects/habitica/front/zh_Hans/

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (328 of 328 strings)

Translation: Habitica/Front
Translate-URL: https://translate.habitica.com/projects/habitica/front/pt_BR/

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/

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/

Translated using Weblate (German)

Currently translated at 100.0% (328 of 328 strings)

Translation: Habitica/Front
Translate-URL: https://translate.habitica.com/projects/habitica/front/de/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (676 of 676 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/zh_Hans/

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (676 of 676 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/pt_BR/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (355 of 355 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/zh_Hans/

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (355 of 355 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/pt_BR/

Translated using Weblate (German)

Currently translated at 100.0% (355 of 355 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/de/

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (230 of 230 strings)

Translation: Habitica/Character
Translate-URL: https://translate.habitica.com/projects/habitica/character/pt_BR/

Translated using Weblate (Spanish)

Currently translated at 75.3% (49 of 65 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/es/

Translated using Weblate (German)

Currently translated at 86.1% (56 of 65 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/de/

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (211 of 211 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/pt_BR/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (2013 of 2013 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% (2013 of 2013 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/zh_Hans/
2019-12-23 21:28:40 +01:00
Sabe Jones
011a795af2 Merge branch 'release' into develop 2019-12-23 13:46:49 -06:00
Sabe Jones
5bcd1e8b6f Merge branch 'release' into develop 2019-12-23 13:10:09 -06:00
Matteo Pagliazzi
527544354a fix typo in comment 2019-12-23 18:15:50 +01:00
negue
dd0bcfab97 fix challenge layout (#11620)
* wrap challenge task icons + margins

* full width challenge card on small devices + padding under add-challenge button
2019-12-23 18:10:48 +01:00
Yo
04a9c97393 Fix Typos (#11644)
* Fix Typos

* Fix More Typos
2019-12-23 17:52:55 +01:00
Timothy
7d2c5ed339 Fixed disappearing email form bug by forcing a refresh after submission, Fixes #11565 (#11614)
* Fixed disappearing form bug by forcing a refresh after submission

* Added reloadPage() to the changeEmail submit button

* Added indentation for the reloadPage() function

* Adjusted changeUser() function (added reloadPage)

Added reloadPage() function to the changeUser() function. This should allow the page to reload after the email is updated instead of before the function gets to finish updating the account's email

* Adjusted changeUser() function

Added  window.location.reload() to the changeUser() function. This should allow the page to reload after the email is updated instead of before the function gets to finish updating the account's email

* Adjusted changeUser function
2019-12-23 17:48:55 +01:00
Glendon Solsberry
b9af3fb40e Updates notifications screen to a more consistent UI (#11635) 2019-12-23 17:45:42 +01:00
dependabot-preview[bot]
6b072f0f8f build(deps): bump eslint from 6.7.2 to 6.8.0 in /website/client (#11651)
Bumps [eslint](https://github.com/eslint/eslint) from 6.7.2 to 6.8.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/master/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v6.7.2...v6.8.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-23 11:22:48 +01:00
dependabot-preview[bot]
92009c1100 build(deps): bump csv-stringify from 5.3.4 to 5.3.5 (#11655)
Bumps [csv-stringify](https://github.com/adaltas/node-csv-stringify) from 5.3.4 to 5.3.5.
- [Release notes](https://github.com/adaltas/node-csv-stringify/releases)
- [Changelog](https://github.com/adaltas/node-csv-stringify/blob/master/CHANGELOG.md)
- [Commits](https://github.com/adaltas/node-csv-stringify/compare/v5.3.4...v5.3.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-23 11:20:36 +01:00
dependabot-preview[bot]
383f353534 build(deps): bump @babel/preset-env from 7.7.6 to 7.7.7 (#11657)
Bumps [@babel/preset-env](https://github.com/babel/babel) from 7.7.6 to 7.7.7.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.7.6...v7.7.7)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-23 11:20:23 +01:00
dependabot-preview[bot]
5bc052c12c build(deps): bump superagent from 5.1.2 to 5.1.3 (#11653)
Bumps [superagent](https://github.com/visionmedia/superagent) from 5.1.2 to 5.1.3.
- [Release notes](https://github.com/visionmedia/superagent/releases)
- [Changelog](https://github.com/visionmedia/superagent/blob/master/HISTORY.md)
- [Commits](https://github.com/visionmedia/superagent/compare/v5.1.2...v5.1.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-23 11:20:01 +01:00
dependabot-preview[bot]
3490930594 build(deps): bump xml2js from 0.4.22 to 0.4.23 (#11660)
Bumps [xml2js](https://github.com/Leonidas-from-XIV/node-xml2js) from 0.4.22 to 0.4.23.
- [Release notes](https://github.com/Leonidas-from-XIV/node-xml2js/releases)
- [Commits](https://github.com/Leonidas-from-XIV/node-xml2js/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-23 11:19:49 +01:00
dependabot-preview[bot]
7cd1871754 build(deps): bump sass from 1.23.7 to 1.24.0 in /website/client (#11648)
Bumps [sass](https://github.com/sass/dart-sass) from 1.23.7 to 1.24.0.
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.23.7...1.24.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-23 11:19:09 +01:00
dependabot-preview[bot]
9309821c77 build(deps): bump core-js from 3.5.0 to 3.6.0 in /website/client (#11649)
Bumps [core-js](https://github.com/zloirock/core-js) from 3.5.0 to 3.6.0.
- [Release notes](https://github.com/zloirock/core-js/releases)
- [Changelog](https://github.com/zloirock/core-js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/zloirock/core-js/compare/v3.5.0...v3.6.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-23 11:18:58 +01:00
dependabot-preview[bot]
c13f45dceb build(deps): bump webpack from 4.41.2 to 4.41.4 in /website/client (#11650)
Bumps [webpack](https://github.com/webpack/webpack) from 4.41.2 to 4.41.4.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v4.41.2...v4.41.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-23 11:18:49 +01:00
dependabot-preview[bot]
8c661e55c7 build(deps): bump aws-sdk from 2.590.0 to 2.595.0 (#11652)
Bumps [aws-sdk](https://github.com/aws/aws-sdk-js) from 2.590.0 to 2.595.0.
- [Release notes](https://github.com/aws/aws-sdk-js/releases)
- [Changelog](https://github.com/aws/aws-sdk-js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-js/compare/v2.590.0...v2.595.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-23 11:18:41 +01:00
dependabot-preview[bot]
4ef3ccd23b build(deps): bump mongoose from 5.8.1 to 5.8.2 (#11654)
Bumps [mongoose](https://github.com/Automattic/mongoose) from 5.8.1 to 5.8.2.
- [Release notes](https://github.com/Automattic/mongoose/releases)
- [Changelog](https://github.com/Automattic/mongoose/blob/master/History.md)
- [Commits](https://github.com/Automattic/mongoose/compare/5.8.1...5.8.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-23 11:18:17 +01:00
dependabot-preview[bot]
14821f39b0 build(deps): bump eslint from 6.7.2 to 6.8.0 (#11656)
Bumps [eslint](https://github.com/eslint/eslint) from 6.7.2 to 6.8.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/master/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v6.7.2...v6.8.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-23 11:18:07 +01:00
dependabot-preview[bot]
29ac38a60e build(deps): bump @babel/register from 7.7.4 to 7.7.7 (#11659)
Bumps [@babel/register](https://github.com/babel/babel) from 7.7.4 to 7.7.7.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.7.4...v7.7.7)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-23 11:17:53 +01:00
dependabot-preview[bot]
411219c4b2 build(deps): bump @babel/core from 7.7.5 to 7.7.7 (#11661)
Bumps [@babel/core](https://github.com/babel/babel) from 7.7.5 to 7.7.7.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.7.5...v7.7.7)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-23 11:17:35 +01:00
Melior
7cc744e28e Merge branch 'origin/develop' into Weblate. 2019-12-20 17:17:06 +01:00
Melior
da380567e9 Translated using Weblate (Latin)
Currently translated at 100.0% (8 of 8 strings)

Translation: Habitica/Overview
Translate-URL: https://translate.habitica.com/projects/habitica/overview/la/

Translated using Weblate (Swedish)

Currently translated at 91.7% (1821 of 1985 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/sv/

Translated using Weblate (Latin)

Currently translated at 100.0% (8 of 8 strings)

Translation: Habitica/Overview
Translate-URL: https://translate.habitica.com/projects/habitica/overview/la/

Translated using Weblate (Latin)

Currently translated at 100.0% (36 of 36 strings)

Translation: Habitica/Loadingscreentips
Translate-URL: https://translate.habitica.com/projects/habitica/loadingscreentips/la/

Translated using Weblate (Spanish)

Currently translated at 91.6% (1820 of 1985 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/es/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (676 of 676 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/zh_Hans/

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (676 of 676 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/pt_BR/

Translated using Weblate (Japanese)

Currently translated at 100.0% (487 of 487 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/ja/

Translated using Weblate (Japanese)

Currently translated at 64.6% (42 of 65 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/ja/

Translated using Weblate (Latin)

Currently translated at 100.0% (57 of 57 strings)

Translation: Habitica/Spells
Translate-URL: https://translate.habitica.com/projects/habitica/spells/la/

Translated using Weblate (Latin)

Currently translated at 96.4% (27 of 28 strings)

Translation: Habitica/Rebirth
Translate-URL: https://translate.habitica.com/projects/habitica/rebirth/la/

Translated using Weblate (Latin)

Currently translated at 100.0% (8 of 8 strings)

Translation: Habitica/Overview
Translate-URL: https://translate.habitica.com/projects/habitica/overview/la/

Translated using Weblate (Latin)

Currently translated at 100.0% (36 of 36 strings)

Translation: Habitica/Loadingscreentips
Translate-URL: https://translate.habitica.com/projects/habitica/loadingscreentips/la/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (171 of 171 strings)

Translation: Habitica/Npc
Translate-URL: https://translate.habitica.com/projects/habitica/npc/zh_Hans/

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (171 of 171 strings)

Translation: Habitica/Npc
Translate-URL: https://translate.habitica.com/projects/habitica/npc/pt_BR/

Translated using Weblate (Japanese)

Currently translated at 100.0% (171 of 171 strings)

Translation: Habitica/Npc
Translate-URL: https://translate.habitica.com/projects/habitica/npc/ja/

Translated using Weblate (Spanish (Latin America))

Currently translated at 52.3% (34 of 65 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/es_419/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (169 of 169 strings)

Translation: Habitica/Limited
Translate-URL: https://translate.habitica.com/projects/habitica/limited/zh_Hans/

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (169 of 169 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% (483 of 483 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/pt_BR/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (298 of 298 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/zh_Hans/

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (298 of 298 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/pt_BR/

Translated using Weblate (Japanese)

Currently translated at 100.0% (298 of 298 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/ja/

Translated using Weblate (Japanese)

Currently translated at 98.5% (480 of 487 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/ja/

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (65 of 65 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/zh_Hans/

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (65 of 65 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/pt_BR/

Translated using Weblate (French)

Currently translated at 100.0% (65 of 65 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/fr/

Translated using Weblate (German)

Currently translated at 84.6% (55 of 65 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/de/
2019-12-20 17:16:46 +01:00
Sabe Jones
c80977d236 Merge branch 'release' into develop 2019-12-20 10:13:19 -06:00
Matteo Pagliazzi
a05c7d2c6c fix(onboarding): make sure migration does not fail with missing field 2019-12-20 12:45:01 +01:00
Xaz16
2c0da084ea Fix: reassign object for user.items.quest to trigger change in vue view 2019-12-15 22:18:26 +03:00
Xaz16
6e183c3927 Fix: reassign object for user.items.food to trigger change in vue view 2019-12-15 22:14:40 +03:00
Xaz16
0f755ab80d Fix: reassign object for user.items.hatchingPotions to trigger change in vue view 2019-12-15 22:09:07 +03:00
Xaz16
8b780eaf0d Fix: pet tests 2019-12-15 22:00:34 +03:00
Xaz16
dec0488b08 Fix: reassign object for user.items.mounts to trigger change in vue view 2019-12-15 20:26:53 +03:00
Xaz16
aea02d735e Fix: reassign object for user.items.eggs to trigger change in vue view 2019-12-15 20:22:47 +03:00
Xaz16
3e476c4f52 Fix: reassign object for items.pets to trigger change in vue view 2019-12-15 20:05:11 +03:00
Xaz16
9cbdf0df42 Fix: reassign object for user.items.gear.owned to trigger change in vue view 2019-12-15 19:57:07 +03:00
osiris
104d888bfb Fix incorrect error when sending private messages (PMs) to a player you have blocked #11612
Introduce a new error type blockedToSendToThisUser for the cases where you have blocked a player from sending private messages to you, if you try to message them or if you try to transfer gems to them, you will see the error "You can't send to this player because you have block this player."
2019-12-15 19:18:16 +08:00
nikosmonaut
1c719a8dbb Unlink group tags when a user leaves it 2019-12-14 14:54:55 +01:00
Xaz16
00ea6a4c7f Merge remote-tracking branch 'upstream/develop' into develop 2019-12-11 22:39:01 +03:00
1100 changed files with 71684 additions and 53277 deletions

4
.gitignore vendored
View File

@@ -37,3 +37,7 @@ yarn.lock
.elasticbeanstalk/*
!.elasticbeanstalk/*.cfg.yml
!.elasticbeanstalk/*.global.yml
/.vscode
# webstorm fake webpack for path intellisense
webpack.webstorm.config

View File

@@ -1,4 +1,6 @@
node_modules/**
content_cache
content_cache/**
website/client/**
test/**
.git/**
@@ -7,3 +9,4 @@ test/**
*.swp
*.swx
website/raw_sprites/**
content_cache/**

View File

@@ -1,6 +1,7 @@
FROM node:12
ENV ADMIN_EMAIL admin@habitica.com
ENV EMAILS_COMMUNITY_MANAGER_EMAIL admin@habitica.com
ENV AMAZON_PAYMENTS_CLIENT_ID amzn1.application-oa2-client.68ed9e6904ef438fbc1bf86bf494056e
ENV AMAZON_PAYMENTS_SELLER_ID AMQ3SB4SG5E91
ENV AMPLITUDE_KEY e8d4c24b3d6ef3ee73eeba715023dd43

View File

@@ -3,9 +3,12 @@ FROM node:12
# Install global packages
RUN npm install -g gulp-cli mocha
# Copy Habitica code into container and install dependencies
# Copy package.json and package-lock.json into image, then install
# dependencies.
WORKDIR /usr/src/habitica
COPY . /usr/src/habitica
COPY ["package.json", "package-lock.json", "./"]
RUN npm install
# Copy the remaining source files in.
COPY . /usr/src/habitica
RUN npm run postinstall

View File

@@ -1,8 +1,6 @@
Habitica ![Build Status](https://github.com/HabitRPG/habitica/workflows/Test/badge.svg) [![Code Climate](https://codeclimate.com/github/HabitRPG/habitrpg.svg)](https://codeclimate.com/github/HabitRPG/habitrpg) [![Bountysource](https://api.bountysource.com/badge/tracker?tracker_id=68393)](https://www.bountysource.com/trackers/68393-habitrpg?utm_source=68393&utm_medium=shield&utm_campaign=TRACKER_BADGE) [![Open Source Helpers](https://www.codetriage.com/habitrpg/habitica/badges/users.svg)](https://www.codetriage.com/habitrpg/habitica)
===============
[![Greenkeeper badge](https://badges.greenkeeper.io/HabitRPG/habitica.svg)](https://greenkeeper.io/)
[Habitica](https://habitica.com) is an open source habit building program which treats your life like a Role Playing Game. Level up as you succeed, lose HP as you fail, earn money to buy weapons and armor.
**We need more programmers!** Your assistance will be greatly appreciated. The wiki pages below and the additional pages they link to will tell you how to get started on contributing code and where you can go to seek further help or ask questions:

View File

@@ -32,7 +32,7 @@
"LOGGLY_SUBDOMAIN": "example-subdomain",
"LOGGLY_TOKEN": "example-token",
"MAINTENANCE_MODE": "false",
"NODE_DB_URI": "mongodb://localhost/habitrpg",
"NODE_DB_URI": "mongodb://localhost:27017/habitrpg",
"MONGODB_POOL_SIZE": "10",
"NODE_ENV": "development",
"PATH": "bin:node_modules/.bin:/usr/local/bin:/usr/bin:/bin",
@@ -70,9 +70,14 @@
"SLACK_URL": "https://hooks.slack.com/services/some-url",
"STRIPE_API_KEY": "aaaabbbbccccddddeeeeffff00001111",
"STRIPE_PUB_KEY": "22223333444455556666777788889999",
"TEST_DB_URI": "mongodb://localhost/habitrpg_test",
"TEST_DB_URI": "mongodb://localhost:27017/habitrpg_test",
"TRANSIFEX_SLACK_CHANNEL": "transifex",
"WEB_CONCURRENCY": 1,
"SKIP_SSL_CHECK_KEY": "key",
"ENABLE_STACKDRIVER_TRACING": "false"
"ENABLE_STACKDRIVER_TRACING": "false",
"APPLE_AUTH_PRIVATE_KEY": "",
"APPLE_TEAM_ID": "",
"APPLE_AUTH_CLIENT_ID": "",
"APPLE_AUTH_KEY_ID": "",
"BLOCKED_IPS": ""
}

View File

@@ -15,8 +15,9 @@ services:
ports:
- "8080:8080"
volumes:
- .:/code
- /code/node_modules
- .:/usr/src/habitica
- /usr/src/habitica/node_modules
- /usr/src/habitica/website/client/node_modules
server:
build:
context: .
@@ -32,8 +33,8 @@ services:
ports:
- "3000:3000"
volumes:
- .:/code
- /code/node_modules
- .:/usr/src/habitica
- /usr/src/habitica/node_modules
mongo:
image: mongo:3.6
networks:

View File

@@ -1,19 +1,20 @@
import gulp from 'gulp';
import babel from 'gulp-babel';
gulp.task('build:src', () => gulp.src('website/server/**/*.js')
gulp.task('build:babel:server', () => gulp.src('website/server/**/*.js')
.pipe(babel())
.pipe(gulp.dest('website/transpiled-babel/')));
gulp.task('build:common', () => gulp.src('website/common/script/**/*.js')
gulp.task('build:babel:common', () => gulp.src('website/common/script/**/*.js')
.pipe(babel())
.pipe(gulp.dest('website/common/transpiled-babel/')));
gulp.task('build:server', gulp.series('build:src', 'build:common', done => done()));
gulp.task('build:babel', gulp.parallel('build:babel:server', 'build:babel:common', done => done()));
gulp.task('build:prod', gulp.series(
'build:server',
'build:babel',
'apidoc',
'content:cache',
done => done(),
));

34
gulp/gulp-content.js Normal file
View File

@@ -0,0 +1,34 @@
import gulp from 'gulp';
import fs from 'fs';
// TODO parallelize, use gulp file helpers
gulp.task('content:cache', done => {
// Requiring at runtime because these files access `common`
// code which in production works only if transpiled so after
// gulp build:babel:common has run
const { CONTENT_CACHE_PATH, getLocalizedContentResponse } = require('../website/server/libs/content'); // eslint-disable-line global-require
const { langCodes } = require('../website/server/libs/i18n'); // eslint-disable-line global-require
try {
// create the cache folder (if it doesn't exist)
try {
fs.mkdirSync(CONTENT_CACHE_PATH);
} catch (err) {
if (err.code !== 'EEXIST') throw err;
}
// clone the content for each language and save
// localize it
// save the result
langCodes.forEach(langCode => {
fs.writeFileSync(
`${CONTENT_CACHE_PATH}${langCode}.json`,
getLocalizedContentResponse(langCode),
'utf8',
);
});
done();
} catch (err) {
done(err);
}
});

View File

@@ -13,8 +13,16 @@ const gulp = require('gulp');
if (process.env.NODE_ENV === 'production') { // eslint-disable-line no-process-env
require('./gulp/gulp-apidoc'); // eslint-disable-line global-require
require('./gulp/gulp-content'); // eslint-disable-line global-require
require('./gulp/gulp-build'); // eslint-disable-line global-require
} else {
require('glob').sync('./gulp/gulp-*').forEach(require); // eslint-disable-line global-require
require('./gulp/gulp-apidoc'); // eslint-disable-line global-require
require('./gulp/gulp-content'); // eslint-disable-line global-require
require('./gulp/gulp-build'); // eslint-disable-line global-require
require('./gulp/gulp-console'); // eslint-disable-line global-require
require('./gulp/gulp-sprites'); // eslint-disable-line global-require
require('./gulp/gulp-start'); // eslint-disable-line global-require
require('./gulp/gulp-tests'); // eslint-disable-line global-require
require('./gulp/gulp-transifex-test'); // eslint-disable-line global-require
require('gulp').task('default', gulp.series('test')); // eslint-disable-line global-require
}

View File

@@ -50,20 +50,22 @@ async function updateUser (user) {
set['achievements.purchasedEquipment'] = true;
}
const hasTask = Object.keys(user.tasksOrder).find(tasksOrderType => {
const order = user.tasksOrder[tasksOrderType];
if (user.tasksOrder) {
const hasTask = Object.keys(user.tasksOrder).find(tasksOrderType => {
const order = user.tasksOrder[tasksOrderType];
if (order && order.length > 0) return true;
return false;
});
if (order && order.length > 0) return true;
return false;
});
if (hasTask) {
set['achievements.createdTask'] = true;
}
if (hasTask) {
set['achievements.createdTask'] = true;
}
const hasExperience = user.stats && user.stats.exp && user.stats.exp > 0;
if (hasTask && hasExperience) {
set['achievements.completedTask'] = true;
const hasExperience = user.stats && user.stats.exp && user.stats.exp > 0;
if (hasTask && hasExperience) {
set['achievements.completedTask'] = true;
}
}
if (count % progressCount === 0) console.warn(`${count} ${user._id}`);

View File

@@ -0,0 +1,91 @@
/* eslint-disable no-console */
const MIGRATION_NAME = '20200131_habit_birthday';
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++;
const inc = {
'items.food.Cake_Skeleton': 1,
'items.food.Cake_Base': 1,
'items.food.Cake_CottonCandyBlue': 1,
'items.food.Cake_CottonCandyPink': 1,
'items.food.Cake_Shade': 1,
'items.food.Cake_White': 1,
'items.food.Cake_Golden': 1,
'items.food.Cake_Zombie': 1,
'items.food.Cake_Desert': 1,
'items.food.Cake_Red': 1,
'achievements.habitBirthdays': 1,
};
const set = {};
let push;
set.migration = MIGRATION_NAME;
if (typeof user.items.gear.owned.armor_special_birthday2019 !== 'undefined') {
set['items.gear.owned.armor_special_birthday2020'] = false;
push = {pinnedItems: {type: 'marketGear', path: 'gear.flat.armor_special_birthday2020', _id: uuid()}};
} else if (typeof user.items.gear.owned.armor_special_birthday2018 !== 'undefined') {
set['items.gear.owned.armor_special_birthday2019'] = false;
push = {pinnedItems: {type: 'marketGear', path: 'gear.flat.armor_special_birthday2019', _id: uuid()}};
} else if (typeof user.items.gear.owned.armor_special_birthday2017 !== 'undefined') {
set['items.gear.owned.armor_special_birthday2018'] = false;
push = {pinnedItems: {type: 'marketGear', path: 'gear.flat.armor_special_birthday2018', _id: uuid()}};
} else if (typeof user.items.gear.owned.armor_special_birthday2016 !== 'undefined') {
set['items.gear.owned.armor_special_birthday2017'] = false;
push = {pinnedItems: {type: 'marketGear', path: 'gear.flat.armor_special_birthday2017', _id: uuid()}};
} else if (typeof user.items.gear.owned.armor_special_birthday2015 !== 'undefined') {
set['items.gear.owned.armor_special_birthday2016'] = false;
push = {pinnedItems: {type: 'marketGear', path: 'gear.flat.armor_special_birthday2016', _id: uuid()}};
} else if (typeof user.items.gear.owned.armor_special_birthday !== 'undefined') {
set['items.gear.owned.armor_special_birthday2015'] = false;
push = {pinnedItems: {type: 'marketGear', path: 'gear.flat.armor_special_birthday2015', _id: uuid()}};
} else {
set['items.gear.owned.armor_special_birthday'] = false;
push = {pinnedItems: {type: 'marketGear', path: 'gear.flat.armor_special_birthday', _id: uuid()}};
}
if (count % progressCount === 0) console.warn(`${count} ${user._id}`);
return await User.update({_id: user._id}, {$inc: inc, $set: set, $push: push}).exec();
}
module.exports = async function processUsers () {
let query = {
migration: {$ne: MIGRATION_NAME},
'auth.timestamps.loggedin': {$gt: new Date('2019-01-15')},
};
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],
};
}
await Promise.all(users.map(updateUser)); // eslint-disable-line no-await-in-loop
}
};

View File

@@ -0,0 +1,82 @@
/* eslint-disable no-console */
const MIGRATION_NAME = '20200218_pet_color_achievements';
import { model as User } from '../../../website/server/models/user';
const progressCount = 1000;
let count = 0;
async function updateUser (user) {
count++;
const set = {
migration: MIGRATION_NAME,
};
if (user && user.items && user.items.pets) {
const pets = user.items.pets;
if (pets['Wolf-CottonCandyPink'] > 0
&& pets['TigerCub-CottonCandyPink'] > 0
&& pets['PandaCub-CottonCandyPink'] > 0
&& pets['LionCub-CottonCandyPink'] > 0
&& pets['Fox-CottonCandyPink'] > 0
&& pets['FlyingPig-CottonCandyPink'] > 0
&& pets['Dragon-CottonCandyPink'] > 0
&& pets['Cactus-CottonCandyPink'] > 0
&& pets['BearCub-CottonCandyPink'] > 0) {
set['achievements.tickledPink'] = true;
}
}
if (user && user.items && user.items.mounts) {
const mounts = user.items.mounts;
if (mounts['Wolf-CottonCandyPink']
&& mounts['TigerCub-CottonCandyPink']
&& mounts['PandaCub-CottonCandyPink']
&& mounts['LionCub-CottonCandyPink']
&& mounts['Fox-CottonCandyPink']
&& mounts['FlyingPig-CottonCandyPink']
&& mounts['Dragon-CottonCandyPink']
&& mounts['Cactus-CottonCandyPink']
&& mounts['BearCub-CottonCandyPink'] ) {
set['achievements.rosyOutlook'] = true;
}
}
if (count % progressCount === 0) console.warn(`${count} ${user._id}`);
return await User.update({ _id: user._id }, { $set: set }).exec();
}
module.exports = async function processUsers () {
let query = {
migration: { $ne: MIGRATION_NAME },
'auth.timestamps.loggedin': { $gt: new Date('2020-02-01') },
};
const fields = {
_id: 1,
items: 1,
};
while (true) { // eslint-disable-line no-constant-condition
const users = await User // eslint-disable-line no-await-in-loop
.find(query)
.limit(250)
.sort({_id: 1})
.select(fields)
.lean()
.exec();
if (users.length === 0) {
console.warn('All appropriate users found and modified.');
console.warn(`\n${count} users processed\n`);
break;
} else {
query._id = {
$gt: users[users.length - 1]._id,
};
}
await Promise.all(users.map(updateUser)); // eslint-disable-line no-await-in-loop
}
};

View File

@@ -0,0 +1,69 @@
/* eslint-disable no-console */
const MIGRATION_NAME = '20200402_webhooks_add_protocol';
import { model as User } from '../../../website/server/models/user';
const progressCount = 1000;
let count = 0;
async function updateUser (user) {
count++;
const set = {
migration: MIGRATION_NAME,
};
if (user && user.webhooks && user.webhooks.length > 0) {
user.webhooks.forEach(webhook => {
// Make sure the protocol is set and valid
if (webhook.url.startsWith('ftp')) {
webhook.url = webhook.url.replace('ftp', 'https');
}
if (!webhook.url.startsWith('http://') && !webhook.url.startsWith('https://')) {
// the default in got 9 was https
// see https://github.com/sindresorhus/got/commit/92bc8082137d7d085750359bbd76c801e213d7d2#diff-0730bb7c2e8f9ea2438b52e419dd86c9L111
webhook.url = `https://${webhook.url}`;
}
});
set.webhooks = user.webhooks;
}
if (count % progressCount === 0) console.warn(`${count} ${user._id}`);
return await User.update({ _id: user._id }, { $set: set }).exec();
}
module.exports = async function processUsers () {
let query = {
migration: { $ne: MIGRATION_NAME },
webhooks: { $exists: true, $not: { $size: 0 } },
};
const fields = {
_id: 1,
webhooks: 1,
};
while (true) { // eslint-disable-line no-constant-condition
const users = await User // eslint-disable-line no-await-in-loop
.find(query)
.limit(250)
.sort({_id: 1})
.select(fields)
.lean()
.exec();
if (users.length === 0) {
console.warn('All appropriate users found and modified.');
console.warn(`\n${count} users processed\n`);
break;
} else {
query._id = {
$gt: users[users.length - 1]._id,
};
}
await Promise.all(users.map(updateUser)); // eslint-disable-line no-await-in-loop
}
};

View File

@@ -0,0 +1,63 @@
/* eslint-disable no-console */
const MIGRATION_NAME = '20200402_webhooks_reenable';
import { model as User } from '../../../website/server/models/user';
const progressCount = 1000;
let count = 0;
async function updateUser (user) {
count++;
const set = {
migration: MIGRATION_NAME,
};
if (user && user.webhooks && user.webhooks.length > 0) {
user.webhooks.forEach(webhook => {
// Re-enable webhooks disabled because of too many failures
if (webhook.enabled === false && webhook.lastFailureAt === null) {
webhook.enabled = true;
}
});
set.webhooks = user.webhooks;
}
if (count % progressCount === 0) console.warn(`${count} ${user._id}`);
return await User.update({ _id: user._id }, { $set: set }).exec();
}
module.exports = async function processUsers () {
let query = {
migration: { $ne: MIGRATION_NAME },
webhooks: { $exists: true, $not: { $size: 0 } },
};
const fields = {
_id: 1,
webhooks: 1,
};
while (true) { // eslint-disable-line no-constant-condition
const users = await User // eslint-disable-line no-await-in-loop
.find(query)
.limit(250)
.sort({_id: 1})
.select(fields)
.lean()
.exec();
if (users.length === 0) {
console.warn('All appropriate users found and modified.');
console.warn(`\n${count} users processed\n`);
break;
} else {
query._id = {
$gt: users[users.length - 1]._id,
};
}
await Promise.all(users.map(updateUser)); // eslint-disable-line no-await-in-loop
}
};

View File

@@ -27,7 +27,7 @@ function uploadFile (buffer, fileName) {
if (error) {
reject(error);
} else {
// console.info(`${fileName} uploaded to ${BUCKET_NAME} succesfully.`);
// console.info(`${fileName} uploaded to ${BUCKET_NAME} successfully.`);
resolve(fileName);
}
});

View File

@@ -18,7 +18,7 @@ function setUpServer () {
setUpServer();
// Replace this with your migration
const processUsers = () => {}; // require('').default;
const processUsers = require().default;
processUsers()
.then(() => {

View File

@@ -0,0 +1,54 @@
// @migrationName = 'RewardsMigrationFlipNegativeCostsValues';
// @authorName = 'hamboomger';
// @authorUuid = '80b61b73-2278-4947-b713-a10112cfe7f5';
/*
* For each reward with negative cost, make it positive
* by assigning it an absolute value of itself
*/
import { Task } from '../../website/server/models/task';
async function flipNegativeCostsValues () {
const query = {
type: 'reward',
value: { $lt: 0 },
};
const fields = {
_id: 1,
value: 1,
};
// eslint-disable-next-line no-constant-condition
while (true) {
// eslint-disable-next-line no-await-in-loop
const rewards = await Task
.find(query)
.limit(250)
.sort({ _id: 1 })
.select(fields)
.lean()
.exec();
if (rewards.length === 0) {
break;
}
const promises = rewards.map(reward => {
const positiveValue = Math.abs(reward.value);
return Task.update({ _id: reward._id }, { $set: { value: positiveValue } }).exec();
});
// eslint-disable-next-line no-await-in-loop
await Promise.all(promises);
query._id = {
$gt: rewards[rewards.length - 1]._id,
};
}
console.log('All rewards with negative values were updated, migration finished');
}
export default flipNegativeCostsValues;

View File

@@ -8,13 +8,16 @@ const BASE_URL = nconf.get('BASE_URL');
const EMAIL_SLUG = 'mandrill-email-slug'; // Set email template to send
const MIGRATION_NAME = 'bulk-email';
const progressCount = 1000;
const progressCount = 250;
let count = 0;
async function updateUser (user) {
count += 1;
if (count % progressCount === 0) console.warn(`${count} ${user._id}`);
if (count % progressCount === 0) {
console.warn(`${count} ${user._id}`);
await new Promise(resolve => setTimeout(resolve, 5000));
}
await sendTxn(
user,

View File

@@ -0,0 +1,64 @@
/* eslint-disable no-console */
import each from 'lodash/each';
import keys from 'lodash/keys';
import content from '../../website/common/script/content/index';
import { model as User } from '../../website/server/models/user';
const MIGRATION_NAME = 'full-gear';
const progressCount = 1000;
let count = 0;
/*
* Award users every extant pet and mount
*/
async function updateUser (user) {
count += 1;
const set = {};
set.migration = MIGRATION_NAME;
each(keys(content.gear.flat), gearItem => {
set[`items.gear.owned.${gearItem}`] = true;
});
if (count % progressCount === 0) console.warn(`${count} ${user._id}`);
return User.update({ _id: user._id }, { $set: set }).exec();
}
export default async function processUsers () {
const query = {
migration: { $ne: MIGRATION_NAME },
'auth.local.lowerCaseUsername': 'olson1',
};
const fields = {
_id: 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
}
}

View File

@@ -33,6 +33,9 @@ async function updateUser (user) {
each(keys(content.specialPets), pet => {
set[`items.pets.${pet}`] = 5;
});
each(keys(content.wackyPets), pet => {
set[`items.pets.${pet}`] = 5;
});
each(keys(content.mounts), mount => {
set[`items.mounts.${mount}`] = true;
});
@@ -54,7 +57,7 @@ async function updateUser (user) {
export default async function processUsers () {
const query = {
migration: { $ne: MIGRATION_NAME },
'auth.local.username': 'olson22',
'auth.local.username': 'SabreTest',
};
const fields = {

View File

@@ -3,7 +3,7 @@ import { v4 as uuid } from 'uuid';
import { model as User } from '../../website/server/models/user';
const MIGRATION_NAME = '20190314_pi_day';
const MIGRATION_NAME = '20200314_pi_day';
const progressCount = 1000;
let count = 0;
@@ -24,27 +24,37 @@ async function updateUser (user) {
'items.food.Pie_Red': 1,
};
const set = {};
let push;
set.migration = MIGRATION_NAME;
set['items.gear.owned.head_special_piDay'] = false;
set['items.gear.owned.shield_special_piDay'] = false;
const push = [
{ type: 'marketGear', path: 'gear.flat.head_special_piDay', _id: uuid() },
{ type: 'marketGear', path: 'gear.flat.shield_special_piDay', _id: uuid() },
];
if (typeof user.items.gear.owned.head_special_piDay !== 'undefined') {
push = false;
} else {
set['items.gear.owned.head_special_piDay'] = false;
set['items.gear.owned.shield_special_piDay'] = false;
push = [
{ type: 'marketGear', path: 'gear.flat.head_special_piDay', _id: uuid() },
{ type: 'marketGear', path: 'gear.flat.shield_special_piDay', _id: uuid() },
];
}
if (count % progressCount === 0) console.warn(`${count} ${user._id}`);
if (push) {
return User
.update({ _id: user._id }, { $inc: inc, $set: set, $push: { pinnedItems: { $each: push } } })
.exec();
}
return User
.update({ _id: user._id }, { $inc: inc, $set: set, $push: { pinnedItems: { $each: push } } })
.update({ _id: user._id }, { $inc: inc, $set: set })
.exec();
}
export default async function processUsers () {
const query = {
migration: { $ne: MIGRATION_NAME },
'auth.timestamps.loggedin': { $gt: new Date('2019-02-15') },
'auth.timestamps.loggedin': { $gt: new Date('2020-02-15') },
};
const fields = {

3888
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,56 +1,58 @@
{
"name": "habitica",
"description": "A habit tracker app which treats your goals like a Role Playing Game.",
"version": "4.129.1",
"version": "4.140.5",
"main": "./website/server/index.js",
"dependencies": {
"@babel/core": "^7.7.5",
"@babel/preset-env": "^7.7.6",
"@babel/register": "^7.7.4",
"@google-cloud/trace-agent": "^4.2.4",
"@slack/client": "^3.8.1",
"@babel/core": "^7.9.0",
"@babel/preset-env": "^7.9.5",
"@babel/register": "^7.9.0",
"@google-cloud/trace-agent": "^4.2.5",
"@slack/client": "^4.12.0",
"accepts": "^1.3.5",
"amazon-payments": "^0.2.7",
"amazon-payments": "^0.2.8",
"amplitude": "^3.5.0",
"apidoc": "^0.17.5",
"apn": "^2.2.0",
"aws-sdk": "^2.590.0",
"bcrypt": "^3.0.7",
"apple-auth": "^1.0.5",
"bcrypt": "^3.0.8",
"body-parser": "^1.18.3",
"compression": "^1.7.4",
"cookie-session": "^1.3.3",
"cookie-session": "^1.4.0",
"coupon-code": "^0.4.5",
"csv-stringify": "^5.3.4",
"csv-stringify": "^5.3.6",
"cwait": "^1.1.1",
"domain-middleware": "~0.1.0",
"eslint": "^6.7.2",
"eslint": "^6.8.0",
"eslint-config-habitrpg": "^6.2.0",
"eslint-plugin-mocha": "^5.0.0",
"express": "^4.16.3",
"express-basic-auth": "^1.1.5",
"express-validator": "^5.2.0",
"glob": "^7.1.6",
"got": "^9.0.0",
"got": "^10.7.0",
"gulp": "^4.0.0",
"gulp-babel": "^8.0.0",
"gulp-imagemin": "^6.2.0",
"gulp-nodemon": "^2.4.1",
"gulp-nodemon": "^2.5.0",
"gulp.spritesmith": "^6.9.0",
"habitica-markdown": "^1.3.2",
"helmet": "^3.21.2",
"helmet": "^3.22.0",
"image-size": "^0.8.3",
"in-app-purchase": "^1.11.3",
"js2xmlparser": "^4.0.0",
"js2xmlparser": "^4.0.1",
"jsonwebtoken": "^8.5.1",
"jwks-rsa": "^1.7.0",
"lodash": "^4.17.15",
"merge-stream": "^2.0.0",
"method-override": "^3.0.0",
"moment": "^2.24.0",
"moment-recur": "^1.0.7",
"mongoose": "^5.8.1",
"morgan": "^1.7.0",
"mongoose": "^5.9.7",
"morgan": "^1.10.0",
"nconf": "^0.10.0",
"node-gcm": "^1.0.2",
"pageres": "^5.1.0",
"on-headers": "^1.0.2",
"passport": "^0.4.1",
"passport-facebook": "^3.0.0",
"passport-google-oauth2": "^0.2.0",
@@ -58,20 +60,20 @@
"paypal-ipn": "3.0.0",
"paypal-rest-sdk": "^1.8.1",
"ps-tree": "^1.0.0",
"regenerator-runtime": "^0.13.3",
"regenerator-runtime": "^0.13.5",
"remove-markdown": "^0.3.0",
"rimraf": "^3.0.0",
"rimraf": "^3.0.2",
"short-uuid": "^3.0.0",
"stripe": "^7.14.0",
"superagent": "^5.1.2",
"stripe": "^7.15.0",
"superagent": "^5.2.2",
"universal-analytics": "^0.4.17",
"useragent": "^2.1.9",
"uuid": "^3.3.3",
"uuid": "^3.4.0",
"validator": "^11.0.0",
"vinyl-buffer": "^1.0.1",
"winston": "^2.4.3",
"winston-loggly-bulk": "^2.0.2",
"xml2js": "^0.4.4"
"winston": "^3.2.1",
"winston-loggly-bulk": "^3.1.0",
"xml2js": "^0.4.23"
},
"private": true,
"engines": {
@@ -103,17 +105,17 @@
"apidoc": "gulp apidoc"
},
"devDependencies": {
"axios": "^0.19.0",
"axios": "^0.19.2",
"chai": "^4.1.2",
"chai-as-promised": "^7.1.1",
"chalk": "^2.4.1",
"chalk": "^3.0.0",
"expect.js": "^0.3.1",
"istanbul": "^1.1.0-alpha.1",
"mocha": "^5.1.1",
"monk": "^7.1.1",
"monk": "^7.1.2",
"require-again": "^2.0.0",
"sinon": "^7.2.4",
"sinon-chai": "^3.0.0",
"sinon-chai": "^3.5.0",
"sinon-stub-promise": "^4.0.0"
},
"optionalDependencies": {}

View File

@@ -34,11 +34,12 @@ async function deleteAmplitudeData (userId, email) {
}
async function deleteHabiticaData (user, email) {
const truncatedEmail = email.slice(0, email.indexOf('@'));
await User.update(
{ _id: user._id },
{
$set: {
'auth.local.email': email,
'auth.local.email': user.auth.local.email ? email : `${truncatedEmail}@example.com`,
'auth.local.hashed_password': '$2a$10$QDnNh1j1yMPnTXDEOV38xOePEWFd4X8DSYwAM8XTmqmacG5X0DKjW',
'auth.local.passwordHashMethod': 'bcrypt',
},

View File

@@ -155,7 +155,7 @@ describe('analyticsService', () => {
});
});
it('sets Unkown if headers are not passed in', () => {
it('sets Unknown if headers are not passed in', () => {
delete data.headers;
return analyticsService.track(eventType, data)
@@ -476,7 +476,7 @@ describe('analyticsService', () => {
});
});
it('sets Unkown if headers are not passed in', () => {
it('sets Unknown if headers are not passed in', () => {
delete data.headers;
return analyticsService.trackPurchase(data)

View File

@@ -0,0 +1,17 @@
import * as contentLib from '../../../../website/server/libs/content';
import content from '../../../../website/common/script/content';
describe('contentLib', () => {
describe('CONTENT_CACHE_PATH', () => {
it('exports CONTENT_CACHE_PATH', () => {
expect(contentLib.CONTENT_CACHE_PATH).to.be.a.string;
});
});
describe('getLocalizedContentResponse', () => {
it('clones, not modify, the original content data', () => {
contentLib.getLocalizedContentResponse();
expect(typeof content.backgrounds.backgrounds062014.beach.text).to.equal('function');
});
});
});

View File

@@ -18,6 +18,16 @@ function getUser () {
value: 'email@facebook',
}],
},
google: {
emails: [{
value: 'email@google',
}],
},
apple: {
emails: [{
value: 'email@apple',
}],
},
},
profile: {
name: 'profile name',
@@ -58,6 +68,8 @@ describe('emails', () => {
const user = getUser();
delete user.profile.name;
delete user.auth.local.email;
delete user.auth.google.emails;
delete user.auth.apple.emails;
const data = getUserInfo(user, ['name', 'email', '_id', 'canSend']);
@@ -67,12 +79,48 @@ describe('emails', () => {
expect(data).to.have.property('canSend', true);
});
it('returns correct user data [google users]', () => {
const attachEmail = requireAgain(pathToEmailLib);
const { getUserInfo } = attachEmail;
const user = getUser();
delete user.profile.name;
delete user.auth.local.email;
delete user.auth.facebook.emails;
delete user.auth.apple.emails;
const data = getUserInfo(user, ['name', 'email', '_id', 'canSend']);
expect(data).to.have.property('name', user.auth.local.username);
expect(data).to.have.property('email', user.auth.google.emails[0].value);
expect(data).to.have.property('_id', user._id);
expect(data).to.have.property('canSend', true);
});
it('returns correct user data [apple users]', () => {
const attachEmail = requireAgain(pathToEmailLib);
const { getUserInfo } = attachEmail;
const user = getUser();
delete user.profile.name;
delete user.auth.local.email;
delete user.auth.google.emails;
delete user.auth.facebook.emails;
const data = getUserInfo(user, ['name', 'email', '_id', 'canSend']);
expect(data).to.have.property('name', user.auth.local.username);
expect(data).to.have.property('email', user.auth.apple.emails[0].value);
expect(data).to.have.property('_id', user._id);
expect(data).to.have.property('canSend', true);
});
it('has fallbacks for missing data', () => {
const attachEmail = requireAgain(pathToEmailLib);
const { getUserInfo } = attachEmail;
const user = getUser();
delete user.auth.local.email;
delete user.auth.facebook;
delete user.auth.google;
delete user.auth.apple;
const data = getUserInfo(user, ['name', 'email', '_id', 'canSend']);
@@ -121,8 +169,7 @@ describe('emails', () => {
sendTxnEmail(mailingInfo, emailType);
expect(got.post).to.be.calledWith('undefined/job', sinon.match({
json: true,
body: {
json: {
data: {
emailType: sinon.match.same(emailType),
to: sinon.match(value => Array.isArray(value) && value[0].name === mailingInfo.name, 'matches mailing info array'),
@@ -154,8 +201,7 @@ describe('emails', () => {
sendTxnEmail(mailingInfo, emailType);
expect(got.post).to.be.calledWith('undefined/job', sinon.match({
json: true,
body: {
json: {
data: {
emailType: sinon.match.same(emailType),
to: sinon.match(val => val[0]._id === mailingInfo._id),
@@ -177,8 +223,7 @@ describe('emails', () => {
sendTxnEmail(mailingInfo, emailType, variables);
expect(got.post).to.be.calledWith('undefined/job', sinon.match({
json: true,
body: {
json: {
data: {
variables: sinon.match(value => value[0].name === 'BASE_URL', 'matches variables'),
personalVariables: sinon.match(value => value[0].rcpt === mailingInfo.email

View File

@@ -3,6 +3,7 @@ import {
CustomError,
NotAuthorized,
BadRequest,
Forbidden,
InternalServerError,
NotFound,
NotificationNotFound,
@@ -113,6 +114,32 @@ describe('Custom Errors', () => {
});
});
describe('Forbidden', () => {
it('is an instance of CustomError', () => {
const forbiddenError = new Forbidden();
expect(forbiddenError).to.be.an.instanceOf(CustomError);
});
it('it returns an http code of 401', () => {
const forbiddenError = new Forbidden();
expect(forbiddenError.httpCode).to.eql(403);
});
it('returns a default message', () => {
const forbiddenError = new Forbidden();
expect(forbiddenError.message).to.eql('Access forbidden.');
});
it('allows a custom message', () => {
const forbiddenError = new Forbidden('Custom Error Message');
expect(forbiddenError.message).to.eql('Custom Error Message');
});
});
describe('InternalServerError', () => {
it('is an instance of CustomError', () => {
const internalServerError = new InternalServerError();

View File

@@ -0,0 +1,111 @@
import {
getLanguageFromBrowser,
getLanguageFromUser,
} from '../../../../website/server/libs/language';
import {
generateReq,
} from '../../../helpers/api-unit.helper';
describe('language lib', () => {
let req;
beforeEach(() => {
req = generateReq();
});
describe('getLanguageFromUser', () => {
it('uses the user preferred language if avalaible', () => {
const user = {
preferences: {
language: 'it',
},
};
expect(getLanguageFromUser(user, req)).to.equal('it');
});
it('falls back to english if the user preferred language is not avalaible', () => {
const user = {
preferences: {
language: 'bla',
},
};
expect(getLanguageFromUser(user, req)).to.equal('en');
});
});
describe('getLanguageFromBrowser', () => {
it('uses browser specificed language', () => {
req.headers['accept-language'] = 'pt';
expect(getLanguageFromBrowser(req)).to.equal('pt');
});
it('uses first language in series if browser specifies multiple', () => {
req.headers['accept-language'] = 'he, pt, it';
expect(getLanguageFromBrowser(req)).to.equal('he');
});
it('skips invalid lanaguages and uses first language in series if browser specifies multiple', () => {
req.headers['accept-language'] = 'blah, he, pt, it';
expect(getLanguageFromBrowser(req)).to.equal('he');
});
it('uses normal version of language if specialized locale is passed in', () => {
req.headers['accept-language'] = 'fr-CA';
expect(getLanguageFromBrowser(req)).to.equal('fr');
});
it('uses normal version of language if specialized locale is passed in', () => {
req.headers['accept-language'] = 'fr-CA';
expect(getLanguageFromBrowser(req)).to.equal('fr');
});
it('uses es if es is passed in', () => {
req.headers['accept-language'] = 'es';
expect(getLanguageFromBrowser(req)).to.equal('es');
});
it('uses es_419 if applicable es-languages are passed in', () => {
req.headers['accept-language'] = 'es-mx';
expect(getLanguageFromBrowser(req)).to.equal('es_419');
});
it('uses es_419 if multiple es languages are passed in', () => {
req.headers['accept-language'] = 'es-GT, es-MX, es-CR';
expect(getLanguageFromBrowser(req)).to.equal('es_419');
});
it('zh', () => {
req.headers['accept-language'] = 'zh-TW';
expect(getLanguageFromBrowser(req)).to.equal('zh_TW');
});
it('uses english if browser specified language is not compatible', () => {
req.headers['accept-language'] = 'blah';
expect(getLanguageFromBrowser(req)).to.equal('en');
});
it('uses english if browser does not specify', () => {
req.headers['accept-language'] = '';
expect(getLanguageFromBrowser(req)).to.equal('en');
});
it('uses english if browser does not supply an accept-language header', () => {
delete req.headers['accept-language'];
expect(getLanguageFromBrowser(req)).to.equal('en');
});
});
});

View File

@@ -0,0 +1,22 @@
import faq from '../../../../website/common/script/content/faq';
import common from '../../../../website/common';
import { localizeContentData } from '../../../../website/server/libs/content';
const { i18n } = common;
describe('localizeContentData', () => {
it('Should take a an object with localization identifiers and '
+ 'return an object with actual translations in English', () => {
const faqInEnglish = localizeContentData(faq, 'en');
expect(faqInEnglish).to.have.property('stillNeedHelp');
expect(faqInEnglish.stillNeedHelp.ios).to.equal(i18n.t('iosFaqStillNeedHelp', 'en'));
});
it('Should take an object with localization identifiers and '
+ 'return an object with actual translations in German', () => {
const faqInEnglish = localizeContentData(faq, 'de');
expect(faqInEnglish).to.have.property('stillNeedHelp');
expect(faqInEnglish.stillNeedHelp.ios).to.equal(i18n.t('iosFaqStillNeedHelp', 'de'));
});
});

View File

@@ -1,14 +1,27 @@
import winston from 'winston';
import logger from '../../../../website/server/libs/logger';
import logger, { _loggerConfig } from '../../../../website/server/libs/logger';
import {
NotFound,
} from '../../../../website/server/libs/errors';
describe('logger', () => {
let logSpy;
let infoSpy;
let warnSpy;
let errorSpy;
const originalLoggingEnabled = _loggerConfig.loggingEnabled;
before(() => { // enable logging in tests
_loggerConfig.loggingEnabled = true;
});
after(() => { // reset value of _loggerConfig.loggingEnabled
_loggerConfig.loggingEnabled = originalLoggingEnabled;
});
beforeEach(() => {
logSpy = sandbox.stub(winston.Logger.prototype, 'log');
infoSpy = sandbox.stub(_loggerConfig.logger, 'info');
warnSpy = sandbox.stub(_loggerConfig.logger, 'warn');
errorSpy = sandbox.stub(_loggerConfig.logger, 'error');
});
afterEach(() => {
@@ -17,18 +30,52 @@ describe('logger', () => {
describe('info', () => {
it('calls winston\'s info log', () => {
logger.info(1, 2, 3);
expect(logSpy).to.be.calledOnce;
expect(logSpy).to.be.calledWith('info', 1, 2, 3);
logger.info('1', 2);
expect(infoSpy).to.be.calledOnce;
expect(infoSpy).to.be.calledWith('1', { extraData: 2 });
});
it('allows up to two arguments', () => {
expect(() => logger.info('1', 2, 3)).to.throw;
expect(infoSpy).to.not.be.called;
});
it('has default message', () => {
logger.info(1);
expect(infoSpy).to.be.calledOnce;
expect(infoSpy).to.be.calledWith('No message provided for log.', { extraData: 1 });
});
it('wraps non objects', () => {
logger.info('message', [1, 2]);
expect(infoSpy).to.be.calledOnce;
expect(infoSpy).to.be.calledWithMatch('message', { extraData: [1, 2] });
});
it('does not wrap objects', () => {
logger.info('message', { a: 1, b: 2 });
expect(infoSpy).to.be.calledOnce;
expect(infoSpy).to.be.calledWithMatch('message', { a: 1, b: 2 });
});
it('throws if two arguments and no message', () => {
expect(() => logger.info({ a: 1 }, { b: 2 })).to.throw;
expect(infoSpy).to.not.be.called;
});
});
describe('error', () => {
context('non-error object', () => {
it('passes through arguments if the first arg is not an error object', () => {
logger.error(1, 2, 3, 4);
expect(logSpy).to.be.calledOnce;
expect(logSpy).to.be.calledWith('error', 1, 2, 3, 4);
it('allows up to two arguments', () => {
expect(() => logger.error('1', 2, 3)).to.throw;
expect(errorSpy).to.not.be.called;
});
it('handled non-error object', () => {
logger.error(1, 2);
expect(errorSpy).to.be.calledOnce;
expect(errorSpy).to.be.calledWithMatch('logger.error expects an Error instance', {
invalidErr: 1,
extraData: 2,
});
});
@@ -37,15 +84,12 @@ describe('logger', () => {
const errInstance = new Error('An error.');
logger.error(errInstance, {
data: 1,
}, 2, 3);
});
expect(logSpy).to.be.calledOnce;
expect(logSpy).to.be.calledWith(
'error',
expect(errorSpy).to.be.calledOnce;
expect(errorSpy).to.be.calledWith(
errInstance.stack,
{ data: 1, fullError: errInstance },
2,
3,
);
});
@@ -56,60 +100,60 @@ describe('logger', () => {
logger.error(errInstance, {
data: 1,
fullError: anotherError,
}, 2, 3);
});
expect(logSpy).to.be.calledOnce;
expect(logSpy).to.be.calledWith(
'error',
expect(errorSpy).to.be.calledOnce;
expect(errorSpy).to.be.calledWith(
errInstance.stack,
{ data: 1, fullError: anotherError },
2,
3,
);
});
it('logs the error when errorData is null', () => {
const errInstance = new Error('An error.');
logger.error(errInstance, null, 2, 3);
logger.error(errInstance, null);
expect(logSpy).to.be.calledOnce;
expect(logSpy).to.be.calledWith(
'error',
expect(errorSpy).to.be.calledOnce;
expect(errorSpy).to.be.calledWithMatch(
errInstance.stack,
null,
2,
3,
{ },
);
});
it('logs the error when errorData is not an object', () => {
const errInstance = new Error('An error.');
logger.error(errInstance, true, 2, 3);
logger.error(errInstance, true);
expect(logSpy).to.be.calledOnce;
expect(logSpy).to.be.calledWith(
'error',
expect(errorSpy).to.be.calledOnce;
expect(errorSpy).to.be.calledWithMatch(
errInstance.stack,
true,
2,
3,
{ extraData: true },
);
});
it('logs the error when errorData is a string', () => {
const errInstance = new Error('An error.');
logger.error(errInstance, 'a string');
expect(errorSpy).to.be.calledOnce;
expect(errorSpy).to.be.calledWithMatch(
errInstance.stack,
{ extraMessage: 'a string' },
);
});
it('logs the error when errorData does not include isHandledError property', () => {
const errInstance = new Error('An error.');
logger.error(errInstance, { httpCode: 400 }, 2, 3);
logger.error(errInstance, { httpCode: 400 });
expect(logSpy).to.be.calledOnce;
expect(logSpy).to.be.calledWith(
'error',
expect(errorSpy).to.be.calledOnce;
expect(errorSpy).to.be.calledWith(
errInstance.stack,
{ httpCode: 400, fullError: errInstance },
2,
3,
);
});
@@ -119,15 +163,12 @@ describe('logger', () => {
logger.error(errInstance, {
isHandledError: true,
httpCode: 502,
}, 2, 3);
});
expect(logSpy).to.be.calledOnce;
expect(logSpy).to.be.calledWith(
'error',
expect(errorSpy).to.be.calledOnce;
expect(errorSpy).to.be.calledWith(
errInstance.stack,
{ httpCode: 502, isHandledError: true, fullError: errInstance },
2,
3,
);
});
@@ -137,15 +178,12 @@ describe('logger', () => {
logger.error(errInstance, {
isHandledError: true,
httpCode: 403,
}, 2, 3);
});
expect(logSpy).to.be.calledOnce;
expect(logSpy).to.be.calledWith(
'warn',
expect(warnSpy).to.be.calledOnce;
expect(warnSpy).to.be.calledWith(
errInstance.stack,
{ httpCode: 403, isHandledError: true, fullError: errInstance },
2,
3,
);
});
@@ -154,19 +192,16 @@ describe('logger', () => {
errInstance.customField = 'Some interesting data';
logger.error(errInstance, {}, 2, 3);
logger.error(errInstance, {});
expect(logSpy).to.be.calledOnce;
expect(logSpy).to.be.calledWith(
'error',
expect(errorSpy).to.be.calledOnce;
expect(errorSpy).to.be.calledWith(
errInstance.stack,
{
fullError: {
customField: 'Some interesting data',
},
},
2,
3,
);
});
});

View File

@@ -278,19 +278,6 @@ describe('Google Payments', () => {
});
});
it('should throw an error if subscription is still valid', async () => {
iap.getPurchaseData.restore();
iapGetPurchaseDataStub = sinon.stub(iap, 'getPurchaseData')
.returns([{ expirationDate: expirationDate.add({ day: 1 }).toDate() }]);
await expect(googlePayments.cancelSubscribe(user, headers))
.to.eventually.be.rejected.and.to.eql({
httpCode: 401,
name: 'NotAuthorized',
message: googlePayments.constants.RESPONSE_STILL_VALID,
});
});
it('should throw an error if receipt is invalid', async () => {
iap.isValidated.restore();
iapIsValidatedStub = sinon.stub(iap, 'isValidated')

View File

@@ -11,7 +11,6 @@ import { model as User } from '../../../../../../website/server/models/user';
import { model as Group } from '../../../../../../website/server/models/group';
import {
generateGroup,
sleep,
} from '../../../../../helpers/api-unit.helper';
describe('Purchasing a group plan for group', () => {
@@ -293,7 +292,7 @@ describe('Purchasing a group plan for group', () => {
});
it('sends appropriate emails when subscribed member of group must manually cancel recurring Android subscription', async () => {
const TECH_ASSISTANCE_EMAIL = nconf.get('TECH_ASSISTANCE_EMAIL');
const TECH_ASSISTANCE_EMAIL = nconf.get('EMAILS_TECH_ASSISTANCE_EMAIL');
plan.customerId = 'random';
plan.paymentMethod = api.constants.GOOGLE_PAYMENT_METHOD;
@@ -308,26 +307,46 @@ describe('Purchasing a group plan for group', () => {
data.groupId = group._id;
await api.createSubscription(data);
await sleep(0.5);
expect(sender.sendTxn).to.have.callCount(4);
expect(sender.sendTxn.args[0][0]._id).to.equal(TECH_ASSISTANCE_EMAIL);
expect(sender.sendTxn.args[0][1]).to.equal('admin-user-subscription-details');
expect(sender.sendTxn.args[1][0]._id).to.equal(recipient._id);
expect(sender.sendTxn.args[1][1]).to.equal('group-member-join');
expect(sender.sendTxn.args[1][2]).to.eql([
const adminUserSubscriptionDetails = sender.sendTxn.args.find(sendTxnArgs => {
const emailType = sendTxnArgs[1];
return emailType === 'admin-user-subscription-details';
});
expect(adminUserSubscriptionDetails).to.exist;
expect(adminUserSubscriptionDetails[0].email).to.equal(TECH_ASSISTANCE_EMAIL);
const groupMemberJoinOne = sender.sendTxn.args.find(sendTxnArgs => {
const emailType = sendTxnArgs[1];
const emailRecipient = sendTxnArgs[0];
return emailType === 'group-member-join' && emailRecipient._id === recipient._id;
});
expect(groupMemberJoinOne).to.exist;
expect(groupMemberJoinOne[0]._id).to.equal(recipient._id);
expect(groupMemberJoinOne[2]).to.eql([
{ name: 'LEADER', content: groupLeaderName },
{ name: 'GROUP_NAME', content: groupName },
{ name: 'PREVIOUS_SUBSCRIPTION_TYPE', content: EMAIL_TEMPLATE_SUBSCRIPTION_TYPE_GOOGLE },
]);
expect(sender.sendTxn.args[2][0]._id).to.equal(group.leader);
expect(sender.sendTxn.args[2][1]).to.equal('group-member-join');
expect(sender.sendTxn.args[3][0]._id).to.equal(group.leader);
expect(sender.sendTxn.args[3][1]).to.equal('group-subscription-begins');
const groupMemberJoinTwo = sender.sendTxn.args.find(sendTxnArgs => {
const emailType = sendTxnArgs[1];
const emailRecipient = sendTxnArgs[0];
return emailType === 'group-member-join' && emailRecipient._id === group.leader;
});
expect(groupMemberJoinTwo).to.exist;
expect(groupMemberJoinTwo[0]._id).to.equal(group.leader);
const groupSubscriptionBegins = sender.sendTxn.args.find(sendTxnArgs => {
const emailType = sendTxnArgs[1];
return emailType === 'group-subscription-begins';
});
expect(groupSubscriptionBegins).to.exist;
expect(groupSubscriptionBegins[0]._id).to.equal(group.leader);
});
it('sends appropriate emails when subscribed member of group must manually cancel recurring iOS subscription', async () => {
const TECH_ASSISTANCE_EMAIL = nconf.get('TECH_ASSISTANCE_EMAIL');
const TECH_ASSISTANCE_EMAIL = nconf.get('EMAILS_TECH_ASSISTANCE_EMAIL');
plan.customerId = 'random';
plan.paymentMethod = api.constants.IOS_PAYMENT_METHOD;
@@ -342,22 +361,43 @@ describe('Purchasing a group plan for group', () => {
data.groupId = group._id;
await api.createSubscription(data);
await sleep(0.5);
expect(sender.sendTxn).to.have.callCount(4);
expect(sender.sendTxn.args[0][0]._id).to.equal(TECH_ASSISTANCE_EMAIL);
expect(sender.sendTxn.args[0][1]).to.equal('admin-user-subscription-details');
expect(sender.sendTxn.args[1][0]._id).to.equal(recipient._id);
expect(sender.sendTxn.args[1][1]).to.equal('group-member-join');
expect(sender.sendTxn.args[1][2]).to.eql([
const adminUserSubscriptionDetails = sender.sendTxn.args.find(sendTxnArgs => {
const emailType = sendTxnArgs[1];
return emailType === 'admin-user-subscription-details';
});
expect(adminUserSubscriptionDetails).to.exist;
expect(adminUserSubscriptionDetails[0].email).to.equal(TECH_ASSISTANCE_EMAIL);
const groupMemberJoinOne = sender.sendTxn.args.find(sendTxnArgs => {
const emailType = sendTxnArgs[1];
const emailRecipient = sendTxnArgs[0];
return emailType === 'group-member-join' && emailRecipient._id === recipient._id;
});
expect(groupMemberJoinOne).to.exist;
expect(groupMemberJoinOne[0]._id).to.equal(recipient._id);
expect(groupMemberJoinOne[2]).to.eql([
{ name: 'LEADER', content: groupLeaderName },
{ name: 'GROUP_NAME', content: groupName },
{ name: 'PREVIOUS_SUBSCRIPTION_TYPE', content: EMAIL_TEMPLATE_SUBSCRIPTION_TYPE_IOS },
]);
expect(sender.sendTxn.args[2][0]._id).to.equal(group.leader);
expect(sender.sendTxn.args[2][1]).to.equal('group-member-join');
expect(sender.sendTxn.args[3][0]._id).to.equal(group.leader);
expect(sender.sendTxn.args[3][1]).to.equal('group-subscription-begins');
const groupMemberJoinTwo = sender.sendTxn.args.find(sendTxnArgs => {
const emailType = sendTxnArgs[1];
const emailRecipient = sendTxnArgs[0];
return emailType === 'group-member-join' && emailRecipient._id === group.leader;
});
expect(groupMemberJoinTwo).to.exist;
expect(groupMemberJoinTwo[0]._id).to.equal(group.leader);
const groupSubscriptionBegins = sender.sendTxn.args.find(sendTxnArgs => {
const emailType = sendTxnArgs[1];
return emailType === 'group-subscription-begins';
});
expect(groupSubscriptionBegins).to.exist;
expect(groupSubscriptionBegins[0]._id).to.equal(group.leader);
});
it('adds months to members with existing gift subscription', async () => {

View File

@@ -626,7 +626,7 @@ describe('payments/index', () => {
.calledWith(recipient, { receiverMsg: msg, senderMsg: msg, save: false });
});
it('sends a message from purchaser to recipient wtih custom message', async () => {
it('sends a message from purchaser to recipient with custom message', async () => {
data.gift.message = 'giftmessage';
await api.buyGems(data);

View File

@@ -1,13 +1,15 @@
import requireAgain from 'require-again';
import apn from 'apn/mock';
import _ from 'lodash';
import nconf from 'nconf';
import gcmLib from 'node-gcm'; // works with FCM notifications too
import { model as User } from '../../../../website/server/models/user';
import {
sendNotification as sendPushNotification,
MAX_MESSAGE_LENGTH,
} from '../../../../website/server/libs/pushNotifications';
describe('pushNotifications', () => {
let user;
let sendPushNotification;
const pathToPushNotifications = '../../../../website/server/libs/pushNotifications';
let fcmSendSpy;
let apnSendSpy;
@@ -28,8 +30,6 @@ describe('pushNotifications', () => {
on: () => null,
send: apnSendSpy,
});
sendPushNotification = requireAgain(pathToPushNotifications).sendNotification;
});
afterEach(() => {
@@ -86,6 +86,67 @@ describe('pushNotifications', () => {
expect(apnSendSpy).to.not.have.been.called;
});
it('cuts the message to 300 chars', () => {
const longMessage = `12345 12345 12345 12345 12345 12345 12345
12345 12345 12345 12345 12345 12345 12345 12345 12345 12345
12345 12345 12345 12345 12345 12345 12345 12345 12345 12345
12345 12345 12345 12345 12345 12345 12345 12345 12345 12345
12345 12345 12345 12345 12345 12345 12345 12345 12345 12345
12345 12345 12345 12345 12345 12345 12345 12345 12345 12345
12345 12345 12345 12345 12345 12345 12345 12345 12345 12345
12345 12345 12345 12345 12345 12345 12345 12345 12345 12345
12345 12345 12345 12345 12345 12345 12345 12345 12345 12345
12345 12345 12345 12345 12345 12345 12345 12345 12345 12345
12345 12345 12345 12345 12345 12345 12345 12345 12345 12345`;
expect(longMessage.length > MAX_MESSAGE_LENGTH).to.equal(true);
const details = {
identifier,
title,
message: longMessage,
payload: {
message: longMessage,
},
};
sendPushNotification(user, details);
expect(details.message).to.equal(_.truncate(longMessage, { length: MAX_MESSAGE_LENGTH }));
expect(details.payload.message)
.to.equal(_.truncate(longMessage, { length: MAX_MESSAGE_LENGTH }));
expect(details.message.length).to.equal(MAX_MESSAGE_LENGTH);
expect(details.payload.message.length).to.equal(MAX_MESSAGE_LENGTH);
});
it('cuts the message to 300 chars (no payload)', () => {
const longMessage = `12345 12345 12345 12345 12345 12345 12345
12345 12345 12345 12345 12345 12345 12345 12345 12345 12345
12345 12345 12345 12345 12345 12345 12345 12345 12345 12345
12345 12345 12345 12345 12345 12345 12345 12345 12345 12345
12345 12345 12345 12345 12345 12345 12345 12345 12345 12345
12345 12345 12345 12345 12345 12345 12345 12345 12345 12345
12345 12345 12345 12345 12345 12345 12345 12345 12345 12345
12345 12345 12345 12345 12345 12345 12345 12345 12345 12345
12345 12345 12345 12345 12345 12345 12345 12345 12345 12345
12345 12345 12345 12345 12345 12345 12345 12345 12345 12345
12345 12345 12345 12345 12345 12345 12345 12345 12345 12345`;
expect(longMessage.length > MAX_MESSAGE_LENGTH).to.equal(true);
const details = {
identifier,
title,
message: longMessage,
};
sendPushNotification(user, details);
expect(details.message).to.equal(_.truncate(longMessage, { length: MAX_MESSAGE_LENGTH }));
expect(details.message.length).to.equal(MAX_MESSAGE_LENGTH);
});
// TODO disabled because APN relies on a Promise
xit('uses APN for iOS devices', () => {
user.pushDevices.push({

View File

@@ -1,4 +1,5 @@
import got from 'got';
import moment from 'moment';
import {
WebhookSender,
taskScoredWebhook,
@@ -13,8 +14,9 @@ import {
import {
generateUser,
defer,
sleep,
} from '../../../helpers/api-unit.helper';
import logger from '../../../../website/server/libs/logger';
describe('webhooks', () => {
let webhooks; let
@@ -43,6 +45,7 @@ describe('webhooks', () => {
options: {
questStarted: true,
questFinised: true,
questInvited: true,
},
}, {
id: 'userActivity',
@@ -98,8 +101,7 @@ describe('webhooks', () => {
expect(WebhookSender.defaultTransformData).to.be.calledOnce;
expect(got.post).to.be.calledOnce;
expect(got.post).to.be.calledWithMatch('http://custom-url.com', {
json: true,
body,
json: body,
});
});
@@ -119,7 +121,7 @@ describe('webhooks', () => {
expect(sendWebhook.attachDefaultData).to.be.calledOnce;
expect(got.post).to.be.calledOnce;
expect(got.post).to.be.calledWithMatch('http://custom-url.com', {
json: true,
json: body,
});
expect(body).to.eql({
@@ -150,8 +152,7 @@ describe('webhooks', () => {
expect(WebhookSender.defaultTransformData).to.not.be.called;
expect(got.post).to.be.calledOnce;
expect(got.post).to.be.calledWithMatch('http://custom-url.com', {
json: true,
body: {
json: {
foo: 'bar',
baz: 'biz',
},
@@ -268,8 +269,7 @@ describe('webhooks', () => {
expect(got.post).to.be.calledOnce;
expect(got.post).to.be.calledWithMatch('http://custom-url.com', {
body,
json: true,
json: body,
});
});
@@ -289,8 +289,7 @@ describe('webhooks', () => {
expect(got.post).to.be.calledOnce;
expect(got.post).to.be.calledWithMatch('http://custom-url.com', {
body,
json: true,
json: body,
});
});
@@ -313,12 +312,105 @@ describe('webhooks', () => {
expect(got.post).to.be.calledTwice;
expect(got.post).to.be.calledWithMatch('http://custom-url.com', {
body,
json: true,
json: body,
});
expect(got.post).to.be.calledWithMatch('http://other-url.com', {
body,
json: true,
json: body,
});
});
describe('failures', () => {
let sendWebhook;
beforeEach(async () => {
sandbox.restore();
sandbox.stub(got, 'post').returns(Promise.reject());
sendWebhook = new WebhookSender({ type: 'taskActivity' });
user.webhooks = [{
url: 'http://custom-url.com', enabled: true, type: 'taskActivity',
}];
await user.save();
expect(user.webhooks[0].failures).to.equal(0);
expect(user.webhooks[0].lastFailureAt).to.equal(undefined);
});
it('does not increase failures counter if request is successfull', async () => {
sandbox.restore();
sandbox.stub(got, 'post').returns(Promise.resolve());
const body = {};
sendWebhook.send(user, body);
expect(got.post).to.be.calledOnce;
expect(got.post).to.be.calledWithMatch('http://custom-url.com', {
json: body,
});
await sleep(0.1);
user = await User.findById(user._id).exec();
expect(user.webhooks[0].failures).to.equal(0);
expect(user.webhooks[0].lastFailureAt).to.equal(undefined);
});
it('records failures', async () => {
sinon.stub(logger, 'error');
const body = {};
sendWebhook.send(user, body);
expect(got.post).to.be.calledOnce;
expect(got.post).to.be.calledWithMatch('http://custom-url.com', {
json: body,
});
await sleep(0.1);
user = await User.findById(user._id).exec();
expect(user.webhooks[0].failures).to.equal(1);
expect((Date.now() - user.webhooks[0].lastFailureAt.getTime()) < 10000).to.be.true;
expect(logger.error).to.be.calledOnce;
logger.error.restore();
});
it('disables a webhook after 10 failures', async () => {
const times = 10;
for (let i = 0; i < times; i += 1) {
sendWebhook.send(user, {});
await sleep(0.1); // eslint-disable-line no-await-in-loop
user = await User.findById(user._id).exec(); // eslint-disable-line no-await-in-loop
}
expect(got.post).to.be.callCount(10);
expect(got.post).to.be.calledWithMatch('http://custom-url.com');
await sleep(0.1);
user = await User.findById(user._id).exec();
expect(user.webhooks[0].enabled).to.equal(false);
expect(user.webhooks[0].failures).to.equal(0);
});
it('resets failures after a month ', async () => {
const oneMonthAgo = moment().subtract(1, 'months').subtract(1, 'days').toDate();
user.webhooks[0].lastFailureAt = oneMonthAgo;
user.webhooks[0].failures = 9;
await user.save();
sendWebhook.send(user, []);
expect(got.post).to.be.calledOnce;
expect(got.post).to.be.calledWithMatch('http://custom-url.com');
await sleep(0.1);
user = await User.findById(user._id).exec();
expect(user.webhooks[0].failures).to.equal(1);
// Check that the stored date is whitin 10s from now
expect((Date.now() - user.webhooks[0].lastFailureAt.getTime()) < 10000).to.be.true;
});
});
});
@@ -363,8 +455,7 @@ describe('webhooks', () => {
expect(got.post).to.be.calledOnce;
expect(got.post).to.be.calledWithMatch(webhooks[0].url, {
json: true,
body: {
json: {
type: 'scored',
webhookType: 'taskActivity',
user: {
@@ -401,8 +492,7 @@ describe('webhooks', () => {
expect(got.post).to.be.calledOnce;
expect(got.post).to.be.calledWithMatch('http://global-activity.com', {
json: true,
body: {
json: {
type: 'scored',
webhookType: 'taskActivity',
user: {
@@ -455,8 +545,7 @@ describe('webhooks', () => {
expect(got.post).to.be.calledOnce;
expect(got.post).to.be.calledWithMatch(webhooks[0].url, {
json: true,
body: {
json: {
type,
webhookType: 'taskActivity',
user: {
@@ -496,8 +585,7 @@ describe('webhooks', () => {
expect(got.post).to.be.calledOnce;
expect(got.post).to.be.calledWithMatch(webhooks[0].url, {
json: true,
body: {
json: {
webhookType: 'taskActivity',
user: {
_id: user._id,
@@ -537,8 +625,7 @@ describe('webhooks', () => {
expect(got.post).to.be.calledOnce;
expect(got.post).to.be.calledWithMatch(webhooks[2].url, {
json: true,
body: {
json: {
type,
webhookType: 'userActivity',
user: {
@@ -576,7 +663,7 @@ describe('webhooks', () => {
};
});
['questStarted', 'questFinised'].forEach(type => {
['questStarted', 'questFinised', 'questInvited'].forEach(type => {
it(`sends ${type} webhooks`, () => {
data.type = type;
@@ -584,8 +671,7 @@ describe('webhooks', () => {
expect(got.post).to.be.calledOnce;
expect(got.post).to.be.calledWithMatch(webhooks[1].url, {
json: true,
body: {
json: {
type,
webhookType: 'questActivity',
user: {
@@ -631,8 +717,7 @@ describe('webhooks', () => {
expect(got.post).to.be.calledOnce;
expect(got.post).to.be.calledWithMatch(webhooks[webhooks.length - 1].url, {
json: true,
body: {
json: {
webhookType: 'groupChatReceived',
user: {
_id: user._id,

View File

@@ -19,7 +19,7 @@ describe('analytics middleware', () => {
next = generateNext();
});
it('attaches analytics object res.locals', () => {
it('attaches analytics object to res', () => {
const attachAnalytics = requireAgain(pathToAnalyticsMiddleware).default;
attachAnalytics(req, res, next);

View File

@@ -0,0 +1,31 @@
import {
generateRes,
generateReq,
generateNext,
} from '../../../helpers/api-unit.helper';
import {
disableCache,
} from '../../../../website/server/middlewares/cache';
describe('cache middlewares', () => {
let res; let req; let
next;
beforeEach(() => {
req = generateReq();
res = generateRes();
next = generateNext();
});
describe('disableCache', () => {
it('sets the correct headers', () => {
disableCache(req, res, next);
expect(res.set).to.have.been.calledWith('Cache-Control', 'no-store');
expect(next).to.have.been.calledOnce;
});
xit('removes the etag header', () => {
// @TODO how to stub onHeaders
});
});
});

View File

@@ -21,28 +21,11 @@ describe('cron middleware', () => {
req;
let user;
beforeEach(done => {
beforeEach(async () => {
res = generateRes();
req = generateReq();
user = new User({
auth: {
local: {
username: 'username',
lowerCaseUsername: 'username',
email: 'email@email.email',
salt: 'salt',
hashed_password: 'hashed_password', // eslint-disable-line camelcase
},
},
});
user.save()
.then(savedUser => {
res.locals.user = savedUser;
res.analytics = analyticsService;
done();
})
.catch(done);
user = await res.locals.user.save();
res.analytics = analyticsService;
});
afterEach(() => {

View File

@@ -0,0 +1,94 @@
import nconf from 'nconf';
import requireAgain from 'require-again';
import {
generateRes,
generateReq,
generateNext,
} from '../../../helpers/api-unit.helper';
import { Forbidden } from '../../../../website/server/libs/errors';
import apiError from '../../../../website/server/libs/apiError';
function checkErrorThrown (next) {
expect(next).to.have.been.calledOnce;
const calledWith = next.getCall(0).args;
expect(calledWith[0].message).to.equal(apiError('ipAddressBlocked'));
expect(calledWith[0] instanceof Forbidden).to.equal(true);
}
function checkErrorNotThrown (next) {
expect(next).to.have.been.calledOnce;
const calledWith = next.getCall(0).args;
expect(typeof calledWith[0] === 'undefined').to.equal(true);
}
describe('ipBlocker middleware', () => {
const pathToIpBlocker = '../../../../website/server/middlewares/ipBlocker';
let res; let req; let next;
beforeEach(() => {
res = generateRes();
req = generateReq();
next = generateNext();
});
it('is disabled when the env var is not defined', () => {
sandbox.stub(nconf, 'get').withArgs('BLOCKED_IPS').returns(undefined);
const attachIpBlocker = requireAgain(pathToIpBlocker).default;
attachIpBlocker(req, res, next);
checkErrorNotThrown(next);
});
it('is disabled when the env var is an empty string', () => {
sandbox.stub(nconf, 'get').withArgs('BLOCKED_IPS').returns('');
const attachIpBlocker = requireAgain(pathToIpBlocker).default;
attachIpBlocker(req, res, next);
checkErrorNotThrown(next);
});
it('is disabled when the env var contains comma separated empty strings', () => {
sandbox.stub(nconf, 'get').withArgs('BLOCKED_IPS').returns(' , , ');
const attachIpBlocker = requireAgain(pathToIpBlocker).default;
attachIpBlocker(req, res, next);
checkErrorNotThrown(next);
});
it('does not throw when the ip does not match', () => {
req.headers['x-forwarded-for'] = '192.168.1.1';
sandbox.stub(nconf, 'get').withArgs('BLOCKED_IPS').returns('192.168.1.2');
const attachIpBlocker = requireAgain(pathToIpBlocker).default;
attachIpBlocker(req, res, next);
checkErrorNotThrown(next);
});
it('throws when a matching ip exist in x-forwarded-for', () => {
req.headers['x-forwarded-for'] = '192.168.1.1';
sandbox.stub(nconf, 'get').withArgs('BLOCKED_IPS').returns('192.168.1.1');
const attachIpBlocker = requireAgain(pathToIpBlocker).default;
attachIpBlocker(req, res, next);
checkErrorThrown(next);
});
it('trims ips in x-forwarded-for', () => {
req.headers['x-forwarded-for'] = '192.168.1.1';
sandbox.stub(nconf, 'get').withArgs('BLOCKED_IPS').returns(', 192.168.1.1 , 192.168.1.4, ');
const attachIpBlocker = requireAgain(pathToIpBlocker).default;
attachIpBlocker(req, res, next);
checkErrorThrown(next);
});
it('works when multiple ips are passed in x-forwarded-for', () => {
req.headers['x-forwarded-for'] = '192.168.1.4';
sandbox.stub(nconf, 'get').withArgs('BLOCKED_IPS').returns('192.168.1.1, 192.168.1.4, 192.168.1.3');
const attachIpBlocker = requireAgain(pathToIpBlocker).default;
attachIpBlocker(req, res, next);
checkErrorThrown(next);
});
});

View File

@@ -12,6 +12,9 @@ import { model as User } from '../../../../website/server/models/user';
const { i18n } = common;
// TODO some of the checks here can be simplified to simply check
// that the right parameters are passed to the functions in libs/language
describe('language middleware', () => {
describe('res.t', () => {
let res; let req; let
@@ -19,6 +22,8 @@ describe('language middleware', () => {
beforeEach(() => {
res = generateRes();
// remove the defaul user
res.locals.user = undefined;
req = generateReq();
next = generateNext();
@@ -57,6 +62,8 @@ describe('language middleware', () => {
beforeEach(() => {
res = generateRes();
// remove the defaul user
res.locals.user = undefined;
req = generateReq();
next = generateNext();
attachTranslateFunction(req, res, next);
@@ -88,7 +95,7 @@ describe('language middleware', () => {
lang: 'es',
};
req.locals = {
res.locals = {
user: {
preferences: {
language: 'it',
@@ -108,7 +115,7 @@ describe('language middleware', () => {
context('authorized request', () => {
it('uses the user preferred language if avalaible', () => {
req.locals = {
res.locals = {
user: {
preferences: {
language: 'it',
@@ -122,7 +129,7 @@ describe('language middleware', () => {
});
it('falls back to english if the user preferred language is not avalaible', done => {
req.locals = {
res.locals = {
user: {
preferences: {
language: 'bla',
@@ -138,7 +145,7 @@ describe('language middleware', () => {
});
it('uses the user preferred language even if a session is included in request', () => {
req.locals = {
res.locals = {
user: {
preferences: {
language: 'it',

View File

@@ -34,7 +34,7 @@ describe('response middleware', () => {
expect(res.json).to.be.calledWith({
success: true,
data: { field: 1 },
notifications: [],
notifications: res.locals.user.notifications,
userV: res.locals.user._v,
appVersion: packageInfo.version,
});
@@ -52,7 +52,7 @@ describe('response middleware', () => {
success: true,
data: { field: 1 },
message: 'hello',
notifications: [],
notifications: res.locals.user.notifications,
userV: res.locals.user._v,
appVersion: packageInfo.version,
});
@@ -69,7 +69,7 @@ describe('response middleware', () => {
expect(res.json).to.be.calledWith({
success: false,
data: { field: 1 },
notifications: [],
notifications: res.locals.user.notifications,
userV: res.locals.user._v,
appVersion: packageInfo.version,
});
@@ -84,42 +84,9 @@ describe('response middleware', () => {
expect(res.json).to.be.calledWith({
success: true,
data: { field: 1 },
notifications: [],
notifications: res.locals.user.notifications,
userV: 0,
appVersion: packageInfo.version,
});
});
it('returns notifications if a user is authenticated', () => {
const { user } = res.locals;
user.notifications = [
null, // invalid, not an object
{ seen: true }, // invalid, no type or id
{ id: 123 }, // invalid, no type
// invalid, no id, not included here because the id would be added automatically
// {type: 'ABC'},
{ type: 'ABC', id: '123' }, // valid
];
responseMiddleware(req, res, next);
res.respond(200, { field: 1 });
expect(res.json).to.be.calledOnce;
expect(res.json).to.be.calledWith({
success: true,
data: { field: 1 },
notifications: [
{
type: 'ABC',
id: '123',
data: {},
seen: false,
},
],
userV: res.locals.user._v,
appVersion: packageInfo.version,
});
});
});

View File

@@ -1164,6 +1164,23 @@ describe('Group Model', () => {
});
});
it('unlink group tag', async () => {
participatingMember.tags.push({
name: party.name,
id: party._id,
group: party._id,
});
await participatingMember.save();
await party.leave(participatingMember);
participatingMember = await User.findOne({ _id: participatingMember._id });
const groupTag = participatingMember.tags.find(tag => tag.id === party._id);
expect(groupTag).to.not.be.undefined;
expect(groupTag.group).to.be.undefined;
});
it('deletes a private party when the last member leaves', async () => {
await party.leave(participatingMember);
await party.leave(sleepingParticipatingMember);

View File

@@ -0,0 +1,18 @@
import { sanitizeText } from '../../../../website/server/models/message';
import { MAX_MESSAGE_LENGTH } from '../../../../website/common/script/constants';
describe('Message Model', () => {
context('sanitizeText', () => {
it('trims messages to the max length', () => {
const veryLongMessage = `
123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789.
THIS PART WON'T BE IN THE MESSAGE (over 3000)
`;
expect(veryLongMessage.length > MAX_MESSAGE_LENGTH).to.equal(true);
const sanitizedText = sanitizeText(veryLongMessage);
expect(sanitizedText).to.not.contain('MESSAGE');
expect(sanitizedText.length).to.equal(MAX_MESSAGE_LENGTH);
});
});
});

View File

@@ -0,0 +1,33 @@
import { model as PushDevice } from '../../../../website/server/models/pushDevice';
describe('PushDevice Model', () => {
context('cleanupCorruptData', () => {
it('converts an array of push devices to a safe version', () => {
const pushDevices = [
null, // invalid, not an object
{ regId: '123' }, // invalid, no type
{ type: 'android' }, // invalid, no regId
new PushDevice({ type: 'android', regId: '1234' }), // valid
];
const safePushDevices = PushDevice.cleanupCorruptData(pushDevices);
expect(safePushDevices.length).to.equal(1);
expect(safePushDevices[0].type).to.equal('android');
expect(safePushDevices[0].regId).to.equal('1234');
});
it('removes duplicates', () => {
const pushDevices = [
new PushDevice({ type: 'android', regId: '1234' }),
new PushDevice({ type: 'android', regId: '1234' }),
new PushDevice({ type: 'iphone', regId: '1234' }), // not duplicate
new PushDevice({ type: 'android', regId: '12345' }), // not duplicate
];
const safePushDevices = PushDevice.cleanupCorruptData(pushDevices);
expect(safePushDevices.length).to.equal(3);
expect(safePushDevices[0].type).to.equal('android');
expect(safePushDevices[0].regId).to.equal('1234');
});
});
});

View File

@@ -0,0 +1,19 @@
import { model as Tag } from '../../../../website/server/models/tag';
describe('Tag Model', () => {
context('cleanupCorruptData', () => {
it('converts an array of tags to a safe version', () => {
const tags = [
null, // invalid, not an object
{ name: '123' }, // invalid, no id
{ id: '123' }, // invalid, no name
new Tag({ name: 'ABC', id: 123 }), // valid
];
const safetags = Tag.cleanupCorruptData(tags);
expect(safetags.length).to.equal(1);
expect(safetags[0].name).to.equal('ABC');
expect(safetags[0].id).to.equal('123');
});
});
});

View File

@@ -181,6 +181,146 @@ describe('User Model', () => {
});
});
context('post init', () => {
it('removes invalid tags when loading the user', async () => {
let user = new User();
await user.save();
await user.update({
$set: {
tags: [
null, // invalid, not an object
// { name: '123' }, // invalid, no id - generated automatically
{ id: '123' }, // invalid, no name
{ name: 'ABC', id: '1234' }, // valid
],
},
}).exec();
user = await User.findById(user._id).exec();
const userToJSON = user.toJSON();
expect(userToJSON.tags.length).to.equal(1);
expect(userToJSON.tags[0]).to.have.all.keys(['id', 'name']);
expect(userToJSON.tags[0].id).to.equal('1234');
expect(userToJSON.tags[0].name).to.equal('ABC');
});
it('removes invalid push devices when loading the user', async () => {
let user = new User();
await user.save();
await user.update({
$set: {
pushDevices: [
null, // invalid, not an object
{ regId: '123' }, // invalid, no type
{ type: 'android' }, // invalid, no regId
{ type: 'android', regId: '1234' }, // valid
],
},
}).exec();
user = await User.findById(user._id).exec();
const userToJSON = user.toJSON();
expect(userToJSON.pushDevices.length).to.equal(1);
expect(userToJSON.pushDevices[0]).to.have.all.keys(['regId', 'type', 'createdAt', 'updatedAt']);
expect(userToJSON.pushDevices[0].type).to.equal('android');
expect(userToJSON.pushDevices[0].regId).to.equal('1234');
});
it('removes duplicate push devices when loading the user', async () => {
let user = new User();
await user.save();
await user.update({
$set: {
pushDevices: [
{ type: 'android', regId: '1234' },
{ type: 'android', regId: '1234' },
],
},
}).exec();
user = await User.findById(user._id).exec();
const userToJSON = user.toJSON();
expect(userToJSON.pushDevices.length).to.equal(1);
expect(userToJSON.pushDevices[0]).to.have.all.keys(['regId', 'type', 'createdAt', 'updatedAt']);
expect(userToJSON.pushDevices[0].type).to.equal('android');
expect(userToJSON.pushDevices[0].regId).to.equal('1234');
});
it('removes invalid notifications when loading the user', async () => {
let user = new User();
await user.save();
await user.update({
$set: {
notifications: [
null, // invalid, not an object
{ seen: true }, // invalid, no type or id
{ id: 123 }, // invalid, no type
// invalid, no id, not included here because the id would be added automatically
// {type: 'ABC'},
{ type: 'ABC', id: '123' }, // valid
],
},
}).exec();
user = await User.findById(user._id).exec();
const userToJSON = user.toJSON();
expect(userToJSON.notifications.length).to.equal(1);
expect(userToJSON.notifications[0]).to.have.all.keys(['data', 'id', 'type', 'seen']);
expect(userToJSON.notifications[0].type).to.equal('ABC');
expect(userToJSON.notifications[0].id).to.equal('123');
});
it('removes multiple NEW_CHAT_MESSAGE for the same group', async () => {
let user = new User();
await user.save();
await user.update({
$set: {
notifications: [
{
type: 'NEW_CHAT_MESSAGE',
id: 123,
data: { group: { id: 12345 } },
},
{
type: 'NEW_CHAT_MESSAGE',
id: 1234,
data: { group: { id: 12345 } },
},
{
type: 'NEW_CHAT_MESSAGE',
id: 123,
data: { group: { id: 123456 } },
}, // not duplicate, different group
{
type: 'NEW_CHAT_MESSAGE_DIFF',
id: 123,
data: { group: { id: 12345 } },
}, // not duplicate, different type
],
},
}).exec();
user = await User.findById(user._id).exec();
const userToJSON = user.toJSON();
expect(userToJSON.notifications.length).to.equal(3);
expect(userToJSON.notifications[0]).to.have.all.keys(['data', 'id', 'type', 'seen']);
expect(userToJSON.notifications[0].type).to.equal('NEW_CHAT_MESSAGE');
expect(userToJSON.notifications[0].id).to.equal('123');
expect(userToJSON.notifications[0].data).to.deep.equal({ group: { id: 12345 } });
expect(userToJSON.notifications[0].seen).to.equal(false);
});
});
context('notifications', () => {
it('can add notifications without data', () => {
const user = new User();
@@ -195,26 +335,6 @@ describe('User Model', () => {
expect(userToJSON.notifications[0].seen).to.eql(false);
});
it('removes invalid notifications when calling toJSON', () => {
const user = new User();
user.notifications = [
null, // invalid, not an object
{ seen: true }, // invalid, no type or id
{ id: 123 }, // invalid, no type
// invalid, no id, not included here because the id would be added automatically
// {type: 'ABC'},
{ type: 'ABC', id: '123' }, // valid
];
const userToJSON = user.toJSON();
expect(userToJSON.notifications.length).to.equal(1);
expect(userToJSON.notifications[0]).to.have.all.keys(['data', 'id', 'type', 'seen']);
expect(userToJSON.notifications[0].type).to.equal('ABC');
expect(userToJSON.notifications[0].id).to.equal('123');
});
it('can add notifications with data and already marked as seen', () => {
const user = new User();

View File

@@ -1,7 +1,7 @@
import { model as UserNotification } from '../../../../website/server/models/userNotification';
describe('UserNotification Model', () => {
context('convertNotificationsToSafeJson', () => {
context('cleanupCorruptData', () => {
it('converts an array of notifications to a safe version', () => {
const notifications = [
null, // invalid, not an object
@@ -11,11 +11,44 @@ describe('UserNotification Model', () => {
new UserNotification({ type: 'ABC', id: 123 }), // valid
];
const notificationsToJSON = UserNotification.convertNotificationsToSafeJson(notifications);
expect(notificationsToJSON.length).to.equal(1);
expect(notificationsToJSON[0]).to.have.all.keys(['data', 'id', 'type', 'seen']);
expect(notificationsToJSON[0].type).to.equal('ABC');
expect(notificationsToJSON[0].id).to.equal('123');
const safeNotifications = UserNotification.cleanupCorruptData(notifications);
expect(safeNotifications.length).to.equal(1);
expect(safeNotifications[0].data).to.deep.equal({});
expect(safeNotifications[0].seen).to.equal(false);
expect(safeNotifications[0].type).to.equal('ABC');
expect(safeNotifications[0].id).to.equal('123');
});
it('removes multiple NEW_CHAT_MESSAGE for the same group', () => {
const notifications = [
new UserNotification({
type: 'NEW_CHAT_MESSAGE',
id: 123,
data: { group: { id: 12345 } },
}),
new UserNotification({
type: 'NEW_CHAT_MESSAGE',
id: 1234,
data: { group: { id: 12345 } },
}),
new UserNotification({
type: 'NEW_CHAT_MESSAGE',
id: 123,
data: { group: { id: 123456 } },
}), // not duplicate, different group
new UserNotification({
type: 'NEW_CHAT_MESSAGE_DIFF',
id: 123,
data: { group: { id: 12345 } },
}), // not duplicate, different type
];
const safeNotifications = UserNotification.cleanupCorruptData(notifications);
expect(safeNotifications.length).to.equal(3);
expect(safeNotifications[0].data).to.deep.equal({ group: { id: 12345 } });
expect(safeNotifications[0].seen).to.equal(false);
expect(safeNotifications[0].type).to.equal('NEW_CHAT_MESSAGE');
expect(safeNotifications[0].id).to.equal('123');
});
});
});

View File

@@ -183,6 +183,7 @@ describe('Webhook Model', () => {
options: {
questStarted: true,
questFinished: true,
questInvited: true,
},
};
});
@@ -197,6 +198,7 @@ describe('Webhook Model', () => {
expect(wh.options).to.eql({
questStarted: false,
questFinished: false,
questInvited: false,
});
});
@@ -210,6 +212,7 @@ describe('Webhook Model', () => {
expect(wh.options).to.eql({
questStarted: false,
questFinished: true,
questInvited: true,
});
});
@@ -224,6 +227,7 @@ describe('Webhook Model', () => {
expect(wh.options).to.eql({
questStarted: true,
questFinished: true,
questInvited: true,
});
});

View File

@@ -187,8 +187,7 @@ describe('GET challenges/groups/:groupId', () => {
});
context('official challenge is present', () => {
let publicGuild; let user; let officialChallenge; let challenge; let
challenge2;
let publicGuild; let user; let officialChallenge; let unofficialChallenges;
before(async () => {
const { group, groupLeader } = await createAndPopulateGroup({
@@ -214,10 +213,14 @@ describe('GET challenges/groups/:groupId', () => {
});
await user.post(`/challenges/${officialChallenge._id}/join`);
challenge = await generateChallenge(user, group);
await user.post(`/challenges/${challenge._id}/join`);
challenge2 = await generateChallenge(user, group);
await user.post(`/challenges/${challenge2._id}/join`);
// We add 10 extra challenges to test whether the official challenge
// (the oldest) makes it to the front page.
unofficialChallenges = [];
for (let i = 0; i < 10; i += 1) {
const challenge = await generateChallenge(user, group); // eslint-disable-line
await user.post(`/challenges/${challenge._id}/join`); // eslint-disable-line
unofficialChallenges.push(challenge);
}
});
it('should return official challenges first', async () => {
@@ -230,18 +233,17 @@ describe('GET challenges/groups/:groupId', () => {
it('should return newest challenges first, after official ones', async () => {
let challenges = await user.get(`/challenges/groups/${publicGuild._id}`);
let foundChallengeIndex = _.findIndex(challenges, { _id: challenge._id });
expect(foundChallengeIndex).to.eql(2);
foundChallengeIndex = _.findIndex(challenges, { _id: challenge2._id });
expect(foundChallengeIndex).to.eql(1);
unofficialChallenges.forEach((chal, index) => {
const foundChallengeIndex = _.findIndex(challenges, { _id: chal._id });
expect(foundChallengeIndex).to.eql(10 - index);
});
const newChallenge = await generateChallenge(user, publicGuild);
await user.post(`/challenges/${newChallenge._id}/join`);
challenges = await user.get(`/challenges/groups/${publicGuild._id}`);
foundChallengeIndex = _.findIndex(challenges, { _id: newChallenge._id });
const foundChallengeIndex = _.findIndex(challenges, { _id: newChallenge._id });
expect(foundChallengeIndex).to.eql(1);
});
});

View File

@@ -242,7 +242,7 @@ describe('GET challenges/user', () => {
});
context('official challenge is present', () => {
let user; let officialChallenge; let challenge; let challenge2; let
let user; let officialChallenge; let unofficialChallenges; let
publicGuild;
before(async () => {
@@ -270,10 +270,14 @@ describe('GET challenges/user', () => {
});
await user.post(`/challenges/${officialChallenge._id}/join`);
challenge = await generateChallenge(user, group);
await user.post(`/challenges/${challenge._id}/join`);
challenge2 = await generateChallenge(user, group);
await user.post(`/challenges/${challenge2._id}/join`);
// We add 10 extra challenges to test whether the official challenge
// (the oldest) makes it to the front page.
unofficialChallenges = [];
for (let i = 0; i < 10; i += 1) {
const challenge = await generateChallenge(user, group); // eslint-disable-line
await user.post(`/challenges/${challenge._id}/join`); // eslint-disable-line
unofficialChallenges.push(challenge);
}
});
it('should return official challenges first', async () => {
@@ -284,20 +288,23 @@ describe('GET challenges/user', () => {
});
it('should return newest challenges first, after official ones', async () => {
let challenges = await user.get('/challenges/user');
let challenges = await user.get('/challenges/user?page=0');
let foundChallengeIndex = _.findIndex(challenges, { _id: challenge._id });
expect(foundChallengeIndex).to.eql(2);
foundChallengeIndex = _.findIndex(challenges, { _id: challenge2._id });
expect(foundChallengeIndex).to.eql(1);
unofficialChallenges.forEach((chal, index) => {
const foundChallengeIndex = _.findIndex(challenges, { _id: chal._id });
if (index === 0) {
expect(foundChallengeIndex).to.eql(-1);
} else {
expect(foundChallengeIndex).to.eql(10 - index);
}
});
const newChallenge = await generateChallenge(user, publicGuild);
await user.post(`/challenges/${newChallenge._id}/join`);
challenges = await user.get('/challenges/user');
foundChallengeIndex = _.findIndex(challenges, { _id: newChallenge._id });
const foundChallengeIndex = _.findIndex(challenges, { _id: newChallenge._id });
expect(foundChallengeIndex).to.eql(1);
});
});

View File

@@ -251,7 +251,7 @@ describe('POST /challenges', () => {
expect(groupLeader.balance).to.eql(oldUserBalance);
});
it('sets all properites of the challenge as passed', async () => {
it('sets all properties of the challenge as passed', async () => {
const name = 'Test Challenge';
const shortName = 'TC Label';
const description = 'Test Description';

View File

@@ -13,7 +13,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 { CHAT_FLAG_FROM_SHADOW_MUTE, MAX_MESSAGE_LENGTH } from '../../../../../website/common/script/constants';
import { getMatchesByWordArray } from '../../../../../website/server/libs/stringUtils';
import bannedWords from '../../../../../website/server/libs/bannedWords';
import guildsAllowingBannedWords from '../../../../../website/server/libs/guildsAllowingBannedWords';
@@ -494,6 +494,7 @@ describe('POST /chat', () => {
123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789.
THIS PART WON'T BE IN THE MESSAGE (over 3000)
`;
expect(veryLongMessage.length > MAX_MESSAGE_LENGTH).to.equal(true);
const newMessage = await user.post(`/groups/${groupWithChat._id}/chat`, { message: veryLongMessage });
const groupMessages = await user.get(`/groups/${groupWithChat._id}/chat`);
@@ -501,9 +502,27 @@ describe('POST /chat', () => {
expect(newMessage.message.id).to.exist;
expect(groupMessages[0].id).to.exist;
expect(newMessage.message.text.length).to.eql(3000);
expect(newMessage.message.text.length).to.eql(MAX_MESSAGE_LENGTH);
expect(newMessage.message.text).to.not.contain('MESSAGE');
expect(groupMessages[0].text.length).to.eql(3000);
expect(groupMessages[0].text.length).to.eql(MAX_MESSAGE_LENGTH);
});
it('chat message with mentions - mention link should not count towards 3000 chars limit', async () => {
const memberUsername = 'memberUsername';
await member.update({ 'auth.local.username': memberUsername });
const messageWithMentions = `hi @${memberUsername} 123456789
123456789 123456789 123456789 123456789 123456789 123456789 89 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 12345678 END.`;
expect(messageWithMentions.length).to.equal(MAX_MESSAGE_LENGTH);
const newMessage = await user.post(`/groups/${groupWithChat._id}/chat`, { message: messageWithMentions });
const groupMessages = await user.get(`/groups/${groupWithChat._id}/chat`);
const mentionLink = `[@${memberUsername}](/profile/${member._id})`;
expect(newMessage.message.text).to.include(mentionLink);
expect(newMessage.message.text).to.include(' END.');
expect(newMessage.message.text.length)
.to.eql(messageWithMentions.length - (`@${memberUsername}`).length + mentionLink.length);
expect(groupMessages[0].text.length).to.eql(newMessage.message.text.length);
});
it('creates a chat with user styles', async () => {

View File

@@ -11,7 +11,9 @@ import apiError from '../../../../../website/server/libs/apiError';
describe('GET /groups', () => {
let user;
let userInGuild;
const NUMBER_OF_PUBLIC_GUILDS = 3; // 2 + the tavern
const NUMBER_OF_PUBLIC_GUILDS_USER_IS_LEADER = 2;
const NUMBER_OF_PUBLIC_GUILDS_USER_IS_MEMBER = 1;
const NUMBER_OF_USERS_PRIVATE_GUILDS = 1;
const NUMBER_OF_GROUPS_USER_CAN_VIEW = 5;
@@ -33,14 +35,20 @@ describe('GET /groups', () => {
name: 'public guild - is member',
type: 'guild',
privacy: 'public',
summary: 'ohayou kombonwa',
description: 'oyasumi',
});
await leader.post(`/groups/${publicGuildUserIsMemberOf._id}/invite`, { uuids: [user._id] });
await user.post(`/groups/${publicGuildUserIsMemberOf._id}/join`);
userInGuild = await generateUser({ guilds: [publicGuildUserIsMemberOf._id] });
publicGuildNotMember = await generateGroup(leader, {
name: 'public guild - is not member',
type: 'guild',
privacy: 'public',
summary: 'Natsume Soseki',
description: 'Kinnosuke no Hondana',
categories,
});
@@ -150,6 +158,35 @@ describe('GET /groups', () => {
expect(guilds.length).to.equal(0);
});
it('filters public guilds by leader role', async () => {
const guilds = await user.get('/groups?type=publicGuilds&leader=true');
expect(guilds.length).to.equal(NUMBER_OF_PUBLIC_GUILDS_USER_IS_LEADER);
});
it('filters public guilds by member role', async () => {
const guilds = await userInGuild.get('/groups?type=publicGuilds&member=true');
expect(guilds.length).to.equal(1);
expect(guilds[0].name).to.have.string('is member');
});
it('filters public guilds by single-word search term', async () => {
const guilds = await user.get('/groups?type=publicGuilds&search=kom');
expect(guilds.length).to.equal(1);
expect(guilds[0].summary).to.have.string('ohayou kombonwa');
});
it('filters public guilds by single-word search term left and right-padded by spaces', async () => {
const guilds = await user.get('/groups?type=publicGuilds&search=++++ohayou+kombonwa+++++');
expect(guilds.length).to.equal(1);
expect(guilds[0].summary).to.have.string('ohayou kombonwa');
});
it('filters public guilds by two-words search term separated by multiple spaces', async () => {
const guilds = await user.get('/groups?type=publicGuilds&search=kinnosuke+++++hon');
expect(guilds.length).to.equal(1);
expect(guilds[0].description).to.have.string('Kinnosuke');
});
});
describe('public guilds pagination', () => {

View File

@@ -177,7 +177,7 @@ describe('GET /groups/:id', () => {
});
});
it('removes non-existant guild from user\'s guild list', async () => {
it('removes non-existent guild from user\'s guild list', async () => {
const guildId = generateUUID();
await user.update({
@@ -197,7 +197,7 @@ describe('GET /groups/:id', () => {
expect(user.guilds).to.not.include(guildId);
});
it('removes non-existant party from user\'s party object', async () => {
it('removes non-existent party from user\'s party object', async () => {
const partyId = generateUUID();
await user.update({

View File

@@ -210,7 +210,7 @@ describe('POST /groups/:groupId/leave', () => {
expect(userWithoutInvitation.invitations.guilds).to.not.be.empty;
});
it('deletes non existant guild from user when user tries to leave', async () => {
it('deletes non existent guild from user when user tries to leave', async () => {
const nonExistentGuildId = generateUUID();
const userWithNonExistentGuild = await generateUser({ guilds: [nonExistentGuildId] });
expect(userWithNonExistentGuild.guilds).to.contain(nonExistentGuildId);
@@ -258,7 +258,7 @@ describe('POST /groups/:groupId/leave', () => {
});
});
it('deletes non existant party from user when user tries to leave', async () => {
it('deletes non existent party from user when user tries to leave', async () => {
const nonExistentPartyId = generateUUID();
const userWithNonExistentParty = await generateUser({ 'party._id': nonExistentPartyId });
expect(userWithNonExistentParty.party._id).to.eql(nonExistentPartyId);

View File

@@ -66,7 +66,7 @@ describe('POST /members/send-private-message', () => {
})).to.eventually.be.rejected.and.eql({
code: 401,
error: 'NotAuthorized',
message: t('notAuthorizedToSendMessageToThisUser'),
message: t('blockedToSendToThisUser'),
});
});

View File

@@ -89,7 +89,7 @@ describe('POST /members/transfer-gems', () => {
})).to.eventually.be.rejected.and.eql({
code: 401,
error: 'NotAuthorized',
message: t('notAuthorizedToSendMessageToThisUser'),
message: t('blockedToSendToThisUser'),
});
});

View File

@@ -29,7 +29,7 @@ describe('payments - amazon - #checkout', () => {
amzLib.checkout.restore();
});
it('makes a purcahse with amazon checkout', async () => {
it('makes a purchase with amazon checkout', async () => {
user = await generateUser({
'profile.name': 'sender',
'purchased.plan.customerId': 'customer-id',

View File

@@ -17,7 +17,7 @@ describe('payments - stripe - #checkout', () => {
await expect(user.post(endpoint, { id: 123 })).to.eventually.be.rejected.and.include({
code: 401,
error: 'Error',
message: 'Invalid API Key provided: aaaabbbb********************1111',
// message: 'Invalid API Key provided: aaaabbbb********************1111',
});
});

View File

@@ -100,7 +100,7 @@ describe('POST /groups/:groupId/quests/accept', () => {
.to.eventually.be.rejected.and.eql({
code: 401,
error: 'NotAuthorized',
message: t('questAlreadyUnderway'),
message: t('questAlreadyStartedFriendly'),
});
});
});

View File

@@ -73,7 +73,7 @@ describe('POST /groups/:groupId/quests/force-start', () => {
.to.eventually.be.rejected.and.eql({
code: 401,
error: 'NotAuthorized',
message: t('questAlreadyUnderway'),
message: t('questAlreadyStarted'),
});
});

View File

@@ -2,6 +2,7 @@ import { v4 as generateUUID } from 'uuid';
import {
createAndPopulateGroup,
translate as t,
server,
sleep,
} from '../../../../helpers/api-integration/v3';
import { quests as questScrolls } from '../../../../../website/common/script/content/quests';
@@ -210,5 +211,39 @@ describe('POST /groups/:groupId/quests/invite/:questKey', () => {
const returnedGroup = await groupLeader.get(`/groups/${group._id}`);
expect(returnedGroup.chat[0]._meta).to.be.undefined;
});
context('sending quest activity webhooks', () => {
before(async () => {
await server.start();
});
after(async () => {
await server.close();
});
it('sends quest invited webhook', async () => {
const uuid = generateUUID();
await member.post('/user/webhook', {
url: `http://localhost:${server.port}/webhooks/${uuid}`,
type: 'questActivity',
enabled: true,
options: {
questInvited: true,
},
});
await leader.post(`/groups/${questingGroup._id}/quests/invite/${PET_QUEST}`);
await sleep();
const body = server.getWebhookData(uuid);
expect(body.type).to.eql('questInvited');
expect(body.group.id).to.eql(questingGroup.id);
expect(body.group.name).to.eql(questingGroup.name);
expect(body.quest.key).to.eql(PET_QUEST);
});
});
});
});

View File

@@ -121,7 +121,7 @@ describe('POST /groups/:groupId/quests/reject', () => {
.to.eventually.be.rejected.and.eql({
code: 401,
error: 'NotAuthorized',
message: t('questAlreadyUnderway'),
message: t('questAlreadyStartedFriendly'),
});
});
});

View File

@@ -120,7 +120,7 @@ describe('DELETE /tasks/:id', () => {
});
context('task cannot be deleted', () => {
it('cannot delete a non-existant task', async () => {
it('cannot delete a non-existent task', async () => {
await expect(user.del('/tasks/550e8400-e29b-41d4-a716-446655440000')).to.eventually.be.rejected.and.eql({
code: 404,
error: 'NotFound',

View File

@@ -39,7 +39,7 @@ describe('GET /tasks/:id', () => {
});
context('task cannot be accessed', () => {
it('cannot get a non-existant task', async () => {
it('cannot get a non-existent task', async () => {
const dummyId = generateUUID();
await expect(user.get(`/tasks/${dummyId}`)).to.eventually.be.rejected.and.eql({

View File

@@ -55,6 +55,18 @@ describe('POST /tasks/user', () => {
});
});
it('returns an error if reward value is a negative number', async () => {
await expect(user.post('/tasks/user', {
type: 'reward',
text: 'reward with negative value',
value: -10,
})).to.eventually.be.rejected.and.eql({
code: 400,
error: 'BadRequest',
message: 'reward validation failed',
});
});
it('does not update user.tasksOrder.{taskType} when the task is not saved because invalid', async () => {
const originalHabitsOrder = (await user.get('/user')).tasksOrder.habits;
await expect(user.post('/tasks/user', {

View File

@@ -530,5 +530,15 @@ describe('PUT /tasks/:id', () => {
expect(savedReward.value).to.eql(100);
});
it('returns an error if reward value is a negative number', async () => {
await expect(user.put(`/tasks/${reward._id}`, {
value: -10,
})).to.eventually.be.rejected.and.eql({
code: 400,
error: 'BadRequest',
message: 'reward validation failed',
});
});
});
});

View File

@@ -27,7 +27,7 @@ describe('DELETE /tasks/:id', () => {
});
});
it('cannot delete a non-existant task', async () => {
it('cannot delete a non-existent task', async () => {
await expect(user.del(`/tasks/${generateUUID()}`)).to.eventually.be.rejected.and.eql({
code: 404,
error: 'NotFound',

View File

@@ -346,4 +346,23 @@ describe('DELETE /user', () => {
await expect(checkExistence('users', user._id)).to.eventually.eql(false);
});
});
context('user with Apple auth', async () => {
beforeEach(async () => {
user = await generateUser({
auth: {
apple: {
id: 'apple-id',
},
},
});
});
it('deletes a Apple user', async () => {
await user.del('/user', {
password: DELETE_CONFIRMATION,
});
await expect(checkExistence('users', user._id)).to.eventually.eql(false);
});
});
});

View File

@@ -125,7 +125,7 @@ describe('PUT /user', () => {
context('Sub-Level Protected Operations', () => {
const protectedOperations = {
'class stat': { 'stats.class': 'wizard' },
'flags unless whitelisted': { 'flags.dropsEnabled': true },
'flags unless whitelisted': { 'flags.chatRevoked': true },
webhooks: { 'preferences.webhooks': [1, 2, 3] },
sleep: { 'preferences.sleep': true },
'disable classes': { 'preferences.disableClasses': true },

View File

@@ -95,4 +95,42 @@ describe('DELETE social registration', () => {
expect(user.auth.goodl).to.be.undefined;
});
});
context('Apple', () => {
it('fails if user does not have an alternative registration method', async () => {
await user.update({
'auth.apple.id': 'some-apple-id',
'auth.local': { ok: true },
});
await expect(user.del('/user/auth/social/apple')).to.eventually.be.rejected.and.eql({
code: 401,
error: 'NotAuthorized',
message: t('cantDetachSocial'),
});
});
it('succeeds if user has a local registration', async () => {
await user.update({
'auth.apple.id': 'some-apple-id',
});
const response = await user.del('/user/auth/social/apple');
expect(response).to.eql({});
await user.sync();
expect(user.auth.apple).to.be.undefined;
});
it('succeeds if user has a facebook registration', async () => {
await user.update({
'auth.apple.id': 'some-apple-id',
'auth.facebook.id': 'some-facebook-id',
'auth.local': { ok: true },
});
const response = await user.del('/user/auth/social/apple');
expect(response).to.eql({});
await user.sync();
expect(user.auth.goodl).to.be.undefined;
});
});
});

View File

@@ -0,0 +1,50 @@
import {
generateUser,
requester,
getProperty,
} from '../../../../../helpers/api-integration/v3';
import * as appleAuth from '../../../../../../website/server/libs/auth/apple';
describe('GET /user/auth/apple', () => {
let api;
let user;
const appleEndpoint = '/user/auth/apple';
before(async () => {
const expectedResult = { id: 'appleId', name: 'an apple user' };
sandbox.stub(appleAuth, 'appleProfile').returns(Promise.resolve(expectedResult));
});
beforeEach(async () => {
api = requester();
user = await generateUser();
});
it('registers a new user', async () => {
const response = await api.get(appleEndpoint);
expect(response.apiToken).to.exist;
expect(response.id).to.exist;
expect(response.newUser).to.be.true;
await expect(getProperty('users', response.id, 'auth.apple.id')).to.eventually.equal('appleId');
await expect(getProperty('users', response.id, 'profile.name')).to.eventually.equal('an apple user');
});
it('logs an existing user in', async () => {
const registerResponse = await api.get(appleEndpoint);
const response = await api.get(appleEndpoint);
expect(response.apiToken).to.eql(registerResponse.apiToken);
expect(response.id).to.eql(registerResponse.id);
expect(response.newUser).to.be.false;
});
it('add social auth to an existing user', async () => {
const response = await user.get(appleEndpoint);
expect(response.apiToken).to.exist;
expect(response.id).to.exist;
expect(response.newUser).to.be.false;
});
});

View File

@@ -492,6 +492,74 @@ describe('POST /user/auth/local/register', () => {
});
});
context('attach to google user', () => {
let user;
const email = 'some@email-google.net';
const username = 'some-username-google';
const password = 'some-password';
beforeEach(async () => {
user = await generateUser();
});
it('checks onlySocialAttachLocal', async () => {
await expect(user.post('/user/auth/local/register', {
email,
username,
password,
confirmPassword: password,
})).to.eventually.be.rejected.and.eql({
code: 401,
error: 'NotAuthorized',
message: t('onlySocialAttachLocal'),
});
});
it('succeeds', async () => {
await user.update({ 'auth.google.id': 'some-google-id', 'auth.local': { ok: true } });
await user.post('/user/auth/local/register', {
username,
email,
password,
confirmPassword: password,
});
await user.sync();
expect(user.auth.local.username).to.eql(username);
expect(user.auth.local.email).to.eql(email);
});
});
context('attach to apple user', () => {
let user;
const email = 'some@email-apple.net';
const username = 'some-username-apple';
const password = 'some-password';
beforeEach(async () => {
user = await generateUser();
});
it('checks onlySocialAttachLocal', async () => {
await expect(user.post('/user/auth/local/register', {
email,
username,
password,
confirmPassword: password,
})).to.eventually.be.rejected.and.eql({
code: 401,
error: 'NotAuthorized',
message: t('onlySocialAttachLocal'),
});
});
it('succeeds', async () => {
await user.update({ 'auth.apple.id': 'some-apple-id', 'auth.local': { ok: true } });
await user.post('/user/auth/local/register', {
username,
email,
password,
confirmPassword: password,
});
await user.sync();
expect(user.auth.local.username).to.eql(username);
expect(user.auth.local.email).to.eql(email);
});
});
context('login is already taken', () => {
let username; let email; let
api;

View File

@@ -51,6 +51,7 @@ describe('POST /user/auth/social', () => {
await expect(getProperty('users', response.id, 'profile.name')).to.eventually.equal('a facebook user');
await expect(getProperty('users', response.id, 'auth.local.lowerCaseUsername')).to.exist;
await expect(getProperty('users', response.id, 'auth.facebook.id')).to.eventually.equal(facebookId);
});
it('logs an existing user in', async () => {
@@ -106,6 +107,7 @@ describe('POST /user/auth/social', () => {
expect(response.apiToken).to.exist;
expect(response.id).to.exist;
expect(response.newUser).to.be.true;
await expect(getProperty('users', response.id, 'auth.google.id')).to.eventually.equal(googleId);
await expect(getProperty('users', response.id, 'profile.name')).to.eventually.equal('a google user');
});

View File

@@ -16,7 +16,7 @@ describe('PUT /user/auth/update-email', () => {
const newEmail = 'SOmE-nEw-emAIl_2@example.net';
const oldPassword = 'password'; // from habitrpg/test/helpers/api-integration/v3/object-generators.js
context('Local Authenticaion User', async () => {
context('Local Authentication User', async () => {
let user;
beforeEach(async () => {

View File

@@ -81,6 +81,16 @@ describe('POST /user/webhook', () => {
expect(webhook.type).to.eql('taskActivity');
});
it('ignores protected fields', async () => {
body.failures = 3;
body.lastFailureAt = new Date();
const webhook = await user.post('/user/webhook', body);
expect(webhook.failures).to.eql(0);
expect(webhook.lastFailureAt).to.eql(undefined);
});
it('successfully adds the webhook', async () => {
expect(user.webhooks).to.eql([]);
@@ -226,6 +236,69 @@ describe('POST /user/webhook', () => {
});
});
it('defaults questActivity options', async () => {
body.type = 'questActivity';
const webhook = await user.post('/user/webhook', body);
expect(webhook.options).to.eql({
questStarted: false,
questFinished: false,
questInvited: false,
});
});
it('can set questActivity options', async () => {
body.type = 'questActivity';
body.options = {
questStarted: true,
questFinished: true,
questInvited: true,
};
const webhook = await user.post('/user/webhook', body);
expect(webhook.options).to.eql({
questStarted: true,
questFinished: true,
questInvited: true,
});
});
it('discards extra properties in questActivity options', async () => {
body.type = 'questActivity';
body.options = {
questStarted: false,
questFinished: true,
questInvited: true,
foo: 'bar',
};
const webhook = await user.post('/user/webhook', body);
expect(webhook.options.foo).to.not.exist;
expect(webhook.options).to.eql({
questStarted: false,
questFinished: true,
questInvited: true,
});
});
['questStarted', 'questFinished', 'questInvited'].forEach(option => {
it(`requires questActivity option ${option} to be a boolean`, async () => {
body.type = 'questActivity';
body.options = {
[option]: 'not a boolean',
};
await expect(user.post('/user/webhook', body)).to.eventually.be.rejected.and.eql({
code: 400,
error: 'BadRequest',
message: t('webhookBooleanOption', { option }),
});
});
});
it('discards extra properties in globalActivity options', async () => {
body.type = 'globalActivity';
body.options = {

View File

@@ -63,6 +63,21 @@ describe('PUT /user/webhook/:id', () => {
expect(webhook.options).to.eql(options);
});
it('ignores protected fields', async () => {
const failures = 3;
const lastFailureAt = new Date();
await user.put(`/user/webhook/${webhookToUpdate.id}`, {
failures, lastFailureAt,
});
await user.sync();
const webhook = user.webhooks.find(hook => webhookToUpdate.id === hook.id);
expect(webhook.failures).to.eql(0);
expect(webhook.lastFailureAt).to.eql(undefined);
});
it('updates a webhook with empty label', async () => {
const url = 'http://a-new-url.com';
const type = 'groupChatReceived';

View File

@@ -0,0 +1,65 @@
import {
requester,
translate,
} from '../../../helpers/api-integration/v4';
import i18n from '../../../../website/common/script/i18n';
describe('GET /faq', () => {
describe('language parameter', () => {
it('returns faq (and does not require authentication)', async () => {
const res = await requester().get('/faq');
expect(res).to.have.property('stillNeedHelp');
expect(res.stillNeedHelp.ios).to.equal(translate('iosFaqStillNeedHelp'));
expect(res).to.have.property('questions');
expect(res.questions[0].question).to.equal(translate('faqQuestion0'));
});
it('returns faq not in English', async () => {
const res = await requester().get('/faq?language=de');
expect(res).to.have.nested.property('stillNeedHelp.ios');
expect(res.stillNeedHelp.ios).to.equal(i18n.t('iosFaqStillNeedHelp', 'de'));
});
it('falls back to English if the desired language is not found', async () => {
const res = await requester().get('/faq?language=wrong');
expect(res).to.have.nested.property('stillNeedHelp.ios');
expect(res.stillNeedHelp.ios).to.equal(translate('iosFaqStillNeedHelp'));
});
});
describe('platform parameter', () => {
it('returns faq with answers for ios platform only', async () => {
const res = await requester().get('/faq?platform=ios');
expect(res).to.have.property('stillNeedHelp');
expect(res.stillNeedHelp).to.eql({ ios: translate('iosFaqStillNeedHelp') });
expect(res).to.have.property('questions');
expect(res.questions[0]).to.eql({
question: translate('faqQuestion0'),
ios: translate('iosFaqAnswer0'),
});
});
it('returns an error when invalid platform parameter is specified', async () => {
const request = requester().get('/faq?platform=wrong');
await expect(request)
.to.eventually.be.rejected.and.eql({
code: 400,
error: 'BadRequest',
message: i18n.t('invalidReqParams'),
});
});
it('falls back to "web" description if there is no description for specified platform', async () => {
const res = await requester().get('/faq?platform=android');
expect(res).to.have.property('stillNeedHelp');
expect(res.stillNeedHelp).to.eql({ web: translate('webFaqStillNeedHelp') });
expect(res).to.have.property('questions');
expect(res.questions[0]).to.eql({
question: translate('faqQuestion0'),
android: translate('androidFaqAnswer0'),
});
});
});
});

View File

@@ -109,7 +109,7 @@ describe('PUT /user', () => {
context('Sub-Level Protected Operations', () => {
const protectedOperations = {
'class stat': { 'stats.class': 'wizard' },
'flags unless whitelisted': { 'flags.dropsEnabled': true },
'flags unless whitelisted': { 'flags.chatRevoked': true },
webhooks: { 'preferences.webhooks': [1, 2, 3] },
sleep: { 'preferences.sleep': true },
'disable classes': { 'preferences.disableClasses': true },

View File

@@ -457,6 +457,74 @@ describe('POST /user/auth/local/register', () => {
});
});
context('attach to google user', () => {
let user;
const email = 'some-google@email.net';
const username = 'some-username-google';
const password = 'some-password';
beforeEach(async () => {
user = await generateUser();
});
it('checks onlySocialAttachLocal', async () => {
await expect(user.post('/user/auth/local/register', {
email,
username,
password,
confirmPassword: password,
})).to.eventually.be.rejected.and.eql({
code: 401,
error: 'NotAuthorized',
message: t('onlySocialAttachLocal'),
});
});
it('succeeds', async () => {
await user.update({ 'auth.google.id': 'some-google-id', 'auth.local': { ok: true } });
await user.post('/user/auth/local/register', {
username,
email,
password,
confirmPassword: password,
});
await user.sync();
expect(user.auth.local.username).to.eql(username);
expect(user.auth.local.email).to.eql(email);
});
});
context('attach to apple user', () => {
let user;
const email = 'some-apple@email.net';
const username = 'some-username-apple';
const password = 'some-password';
beforeEach(async () => {
user = await generateUser();
});
it('checks onlySocialAttachLocal', async () => {
await expect(user.post('/user/auth/local/register', {
email,
username,
password,
confirmPassword: password,
})).to.eventually.be.rejected.and.eql({
code: 401,
error: 'NotAuthorized',
message: t('onlySocialAttachLocal'),
});
});
it('succeeds', async () => {
await user.update({ 'auth.apple.id': 'some-apple-id', 'auth.local': { ok: true } });
await user.post('/user/auth/local/register', {
username,
email,
password,
confirmPassword: password,
});
await user.sync();
expect(user.auth.local.username).to.eql(username);
expect(user.auth.local.email).to.eql(email);
});
});
context('login is already taken', () => {
let username; let email; let
api;

View File

@@ -15,6 +15,7 @@ describe('common.fns.randomDrop', () => {
beforeEach(() => {
user = generateUser();
user._tmp = user._tmp ? user._tmp : {};
user.items.eggs.Wolf = 0;
task = generateTodo({ userId: user._id });
predictableRandom = sandbox.stub().returns(0.5);
});
@@ -34,10 +35,17 @@ describe('common.fns.randomDrop', () => {
context('drops enabled', () => {
beforeEach(() => {
user.flags.dropsEnabled = true;
task.priority = 100000;
});
it('awards an egg and a hatching potion if user has never received any', () => {
delete user.items.eggs.Wolf;
randomDrop(user, { task, predictableRandom });
expect(user._tmp.firstDrops.egg).to.be.a.string;
expect(user._tmp.firstDrops.hatchingPotion).to.be.a.string;
});
it('does nothing if user.items.lastDrop.count is exceeded', () => {
user.items.lastDrop.count = 100;
randomDrop(user, { task, predictableRandom });
@@ -46,7 +54,6 @@ describe('common.fns.randomDrop', () => {
it('drops something when the task is a todo', () => {
expect(user._tmp).to.eql({});
user.flags.dropsEnabled = true;
predictableRandom.returns(0.1);
randomDrop(user, { task, predictableRandom });
@@ -56,7 +63,6 @@ describe('common.fns.randomDrop', () => {
it('drops something when the task is a habit', () => {
task = generateHabit({ userId: user._id });
expect(user._tmp).to.eql({});
user.flags.dropsEnabled = true;
predictableRandom.returns(0.1);
randomDrop(user, { task, predictableRandom });
@@ -66,7 +72,6 @@ describe('common.fns.randomDrop', () => {
it('drops something when the task is a daily', () => {
task = generateDaily({ userId: user._id });
expect(user._tmp).to.eql({});
user.flags.dropsEnabled = true;
predictableRandom.returns(0.1);
randomDrop(user, { task, predictableRandom });
@@ -76,7 +81,6 @@ describe('common.fns.randomDrop', () => {
it('drops something when the task is a reward', () => {
task = generateReward({ userId: user._id });
expect(user._tmp).to.eql({});
user.flags.dropsEnabled = true;
predictableRandom.returns(0.1);
randomDrop(user, { task, predictableRandom });

View File

@@ -110,13 +110,6 @@ describe('common.fns.updateStats', () => {
expect(user.stats.points).to.eql(10);
});
it('add user notification when drops are enabled', () => {
user.stats.lvl = 3;
updateStats(user, { });
expect(user.addNotification).to.be.calledOnce;
expect(user.addNotification).to.be.calledWith('DROPS_ENABLED');
});
it('add user notification when the user levels up', () => {
const initialLvl = user.stats.lvl;
updateStats(user, {
@@ -131,7 +124,7 @@ describe('common.fns.updateStats', () => {
it('add user notification when rebirth is enabled', () => {
user.stats.lvl = 51;
updateStats(user, { });
expect(user.addNotification).to.be.calledTwice; // once is for drops enabled
expect(user.addNotification).to.be.calledOnce;
expect(user.addNotification).to.be.calledWith('REBIRTH_ENABLED');
});

View File

@@ -15,8 +15,8 @@ describe('getDebuffPotionItems', () => {
for (const key of Object.keys(TRANSFORMATION_DEBUFFS_LIST)) {
const debuff = TRANSFORMATION_DEBUFFS_LIST[key];
// Here we itterate whole object to dynamicaly create test suites as
// it described in dock of mocha
// Here we iterate the whole object to dynamically create test suites as
// described in mocha's docs
// https://mochajs.org/#dynamically-generating-tests
// That's why we have eslint-disable here
// eslint-disable-next-line no-loop-func

View File

@@ -173,7 +173,6 @@ describe('shared.ops.rebirth', () => {
it('resets a user\'s flags', () => {
user.flags.itemsEnabled = true;
user.flags.dropsEnabled = true;
user.flags.classSelected = true;
user.flags.rebirthEnabled = true;
user.flags.levelDrops = { test: 'test' };
@@ -181,7 +180,6 @@ describe('shared.ops.rebirth', () => {
rebirth(user);
expect(user.flags.itemsEnabled).to.be.false;
expect(user.flags.dropsEnabled).to.be.false;
expect(user.flags.classSelected).to.be.false;
expect(user.flags.rebirthEnabled).to.be.false;
expect(user.flags.levelDrops).to.be.empty;

View File

@@ -54,7 +54,7 @@ describe('shared.ops.unlock', () => {
}
});
// disabled untill fully implemente
// disabled until fully implemente
xit('returns an error when user already owns items in a full set', done => {
try {
unlock(user, { query: { path: unlockPath } });

View File

@@ -1,6 +1,37 @@
/* eslint-disable import/no-extraneous-dependencies */
import { configure } from '@storybook/vue';
import '../../src/assets/scss/index.scss';
import '../../src/assets/css/sprites.css';
import '../../src/assets/css/sprites/spritesmith-main-0.css';
import '../../src/assets/css/sprites/spritesmith-main-1.css';
import '../../src/assets/css/sprites/spritesmith-main-2.css';
import '../../src/assets/css/sprites/spritesmith-main-3.css';
import '../../src/assets/css/sprites/spritesmith-main-4.css';
import '../../src/assets/css/sprites/spritesmith-main-5.css';
import '../../src/assets/css/sprites/spritesmith-main-6.css';
import '../../src/assets/css/sprites/spritesmith-main-7.css';
import '../../src/assets/css/sprites/spritesmith-main-8.css';
import '../../src/assets/css/sprites/spritesmith-main-9.css';
import '../../src/assets/css/sprites/spritesmith-main-10.css';
import '../../src/assets/css/sprites/spritesmith-main-11.css';
import '../../src/assets/css/sprites/spritesmith-main-12.css';
import '../../src/assets/css/sprites/spritesmith-main-13.css';
import '../../src/assets/css/sprites/spritesmith-main-14.css';
import '../../src/assets/css/sprites/spritesmith-main-15.css';
import '../../src/assets/css/sprites/spritesmith-main-16.css';
import '../../src/assets/css/sprites/spritesmith-main-17.css';
import '../../src/assets/css/sprites/spritesmith-main-18.css';
import '../../src/assets/css/sprites/spritesmith-main-19.css';
import '../../src/assets/css/sprites/spritesmith-main-20.css';
import '../../src/assets/css/sprites/spritesmith-main-21.css';
import '../../src/assets/css/sprites/spritesmith-main-22.css';
import '../../src/assets/css/sprites/spritesmith-main-23.css';
import '../../src/assets/css/sprites/spritesmith-main-24.css';
import '../../src/assets/css/sprites/spritesmith-main-25.css';
import '../../src/assets/css/sprites/spritesmith-main-26.css';
import Vue from 'vue';
import StoreModule from '@/libs/store';
const req = require.context('../../src', true, /.stories.js$/);
@@ -8,4 +39,6 @@ function loadStories () {
req.keys().forEach(filename => req(filename));
}
Vue.use(StoreModule);
configure(loadStories, module);

View File

@@ -0,0 +1,75 @@
export const userStyles = {
contributor: {
admin: true,
level: 9,
text: '',
},
items: {
gear: {
equipped: {
armor: 'armor_special_2',
head: 'head_special_2',
shield: 'shield_special_goldenknight',
headAccessory: 'headAccessory_base_0',
eyewear: 'eyewear_base_0',
weapon: 'weapon_special_1',
back: 'back_base_0',
},
costume: {
armor: 'armor_special_fallRogue',
head: 'head_special_fallRogue',
shield: 'shield_armoire_shieldOfDiamonds',
body: 'body_mystery_201706',
eyewear: 'eyewear_special_blackHalfMoon',
back: 'back_base_0',
headAccessory: 'headAccessory_special_wolfEars',
weapon: 'weapon_armoire_lamplighter',
},
},
},
preferences: {
hair: {
color: 'black', base: 0, bangs: 3, beard: 0, mustache: 0, flower: 0,
},
tasks: { groupByChallenge: false, confirmScoreNotes: false },
size: 'broad',
skin: 'wolf',
shirt: 'zombie',
chair: 'none',
sleep: true,
disableClasses: false,
background: 'midnight_castle',
costume: true,
},
stats: {
buffs: {
str: 0,
int: 0,
per: 0,
con: 0,
stealth: 0,
streaks: false,
snowball: false,
spookySparkles: false,
shinySeed: false,
seafoam: false,
},
training: {
int: 0, per: 0, str: 0, con: 0,
},
hp: 50,
mp: 158,
exp: 227,
gp: 464.31937261345155,
lvl: 17,
class: 'rogue',
points: 17,
str: 0,
con: 0,
int: 0,
per: 0,
toNextLevel: 380,
maxHealth: 50,
maxMP: 158,
},
};

File diff suppressed because it is too large Load Diff

View File

@@ -13,53 +13,54 @@
"test:unit": "vue-cli-service test:unit --require ./tests/unit/helpers.js"
},
"dependencies": {
"@vue/cli-plugin-babel": "^4.1.1",
"@vue/cli-plugin-eslint": "^4.1.1",
"@vue/cli-plugin-router": "^4.1.1",
"@vue/cli-plugin-unit-mocha": "^4.1.1",
"@vue/cli-service": "^4.1.1",
"@storybook/addon-actions": "^5.0.0",
"@storybook/addon-knobs": "^5.0.0",
"@storybook/addon-links": "^5.0.0",
"@storybook/addon-notes": "^5.0.0",
"@storybook/vue": "^5.2.5",
"@vue/cli-plugin-babel": "^4.3.1",
"@vue/cli-plugin-eslint": "^4.3.1",
"@vue/cli-plugin-router": "^4.3.1",
"@vue/cli-plugin-unit-mocha": "^4.3.1",
"@vue/cli-service": "^4.3.1",
"@storybook/addon-actions": "^5.3.18",
"@storybook/addon-knobs": "^5.3.18",
"@storybook/addon-links": "^5.3.18",
"@storybook/addon-notes": "^5.3.18",
"@storybook/vue": "^5.3.18",
"@vue/test-utils": "1.0.0-beta.29",
"amplitude-js": "^5.8.0",
"axios": "^0.19.0",
"amplitude-js": "^5.11.0",
"axios": "^0.19.2",
"axios-progress-bar": "^1.2.0",
"babel-eslint": "^10.0.1",
"babel-eslint": "^10.1.0",
"bootstrap": "^4.4.1",
"bootstrap-vue": "^2.1.0",
"bootstrap-vue": "^2.11.0",
"chai": "^4.1.2",
"core-js": "^3.5.0",
"eslint": "^6.7.2",
"core-js": "^3.6.5",
"eslint": "^6.8.0",
"eslint-config-habitrpg": "^6.2.0",
"eslint-plugin-mocha": "^5.3.0",
"eslint-plugin-vue": "^6.0.1",
"eslint-plugin-vue": "^6.2.2",
"habitica-markdown": "^1.3.2",
"hellojs": "^1.18.1",
"inspectpack": "^4.2.2",
"hellojs": "^1.18.4",
"inspectpack": "^4.4.0",
"intro.js": "^2.9.3",
"jquery": "^3.4.1",
"jquery": "^3.5.0",
"lodash": "^4.17.15",
"moment": "^2.24.0",
"nconf": "^0.10.0",
"sass": "^1.23.7",
"sass-loader": "^8.0.0",
"sass": "^1.26.3",
"sass-loader": "^8.0.2",
"smartbanner.js": "^1.15.0",
"svg-inline-loader": "^0.8.0",
"svg-inline-loader": "^0.8.2",
"svg-url-loader": "^3.0.3",
"svgo": "^1.3.2",
"svgo-loader": "^2.2.1",
"uuid": "^3.3.3",
"uuid": "^3.4.0",
"validator": "^11.1.0",
"vue": "^2.6.11",
"vue-cli-plugin-storybook": "^0.6.1",
"vue-mugen-scroll": "^0.2.6",
"vue-router": "^3.0.6",
"vue-router": "^3.1.6",
"vue-template-compiler": "^2.6.11",
"vue2-perfect-scrollbar": "^1.4.0",
"vuedraggable": "^2.23.1",
"vuejs-datepicker": "git://github.com/habitrpg/vuejs-datepicker.git#5d237615463a84a23dd6f3f77c6ab577d68593ec",
"webpack": "^4.41.2"
"webpack": "^4.42.1"
}
}

View File

@@ -0,0 +1,13 @@
The files in the following subfolders:
- audio
- emails
- icons
- merch
- presskit
are not processed by Webpack so their filenames don't get hashed, but given that they almost never change, they're still cached for 1 week.
In case one of the files needs to be updated the filename should be changed if possible.
For more information see `website/server/middlewares/static.js`.

View File

@@ -20,17 +20,16 @@
</svg>
<!-- eslint-enable max-len -->
</div>
<div class="col-12 text-center">
<h2>{{ $t('tipTitle', {tipNumber: currentTipNumber}) }}</h2>
<p>{{ currentTip }}</p>
</div>
</div>
</div>
<div
id="app"
:class="{'casting-spell': castingSpell}"
:class="{
'casting-spell': castingSpell,
'resting': showRestingBanner
}"
>
<banned-account-modal />
<!-- <banned-account-modal /> -->
<amazon-payments-modal v-if="!isStaticPage" />
<payments-success-modal />
<sub-cancel-modal-confirm v-if="isUserLoaded" />
@@ -66,7 +65,10 @@
</div>
<notifications-display />
<app-menu />
<div class="container-fluid">
<div
class="container-fluid"
:class="{'no-margin': noMargin}"
>
<app-header />
<buyModal
:item="selectedItemToBuy || {}"
@@ -83,7 +85,7 @@
<router-view />
</div>
</div>
<app-footer />
<app-footer v-if="!hideFooter" />
<audio
id="sound"
ref="sound"
@@ -97,13 +99,20 @@
<style lang='scss' scoped>
@import '~@/assets/scss/colors.scss';
@import '~@/assets/scss/variables.scss';
#app {
height: calc(100% - 56px); /* 56px is the menu */
display: flex;
flex-direction: column;
min-height: 100vh;
overflow-x: hidden;
&.resting {
--banner-resting-height: #{$restingToolbarHeight};
}
&.giftingBanner {
--banner-gifting-height: 2.5rem;
}
}
#loading-screen-inapp {
@@ -148,6 +157,13 @@
flex: 1 0 auto;
}
.no-margin {
margin-left: 0;
margin-right: 0;
padding-left: 0;
padding-right: 0;
}
.notification {
border-radius: 1000px;
background-color: $green-10;
@@ -160,7 +176,7 @@
.resting-banner {
width: 100%;
min-height: 40px;
height: $restingToolbarHeight;
background-color: $blue-10;
top: 0;
z-index: 1300;
@@ -246,7 +262,6 @@ import {
} from '@/libs/userlocalManager';
import svgClose from '@/assets/svg/close.svg';
import bannedAccountModal from '@/components/bannedAccountModal';
const COMMUNITY_MANAGER_EMAIL = process.env.EMAILS_COMMUNITY_MANAGER_EMAIL; // eslint-disable-line
@@ -261,7 +276,6 @@ export default {
BuyModal,
SelectMembersModal,
amazonPaymentsModal,
bannedAccountModal,
paymentsSuccessModal,
subCancelModalConfirm,
subCanceledModal,
@@ -279,7 +293,6 @@ export default {
audioSuffix: null,
loading: true,
currentTipNumber: 0,
bannerHidden: false,
};
},
@@ -292,17 +305,14 @@ export default {
castingSpell () {
return this.$store.state.spellOptions.castingSpell;
},
currentTip () {
const numberOfTips = 35 + 1;
const min = 1;
const randomNumber = Math.random() * (numberOfTips - min) + min;
const tipNumber = Math.floor(randomNumber);
this.currentTipNumber = tipNumber; // eslint-disable-line vue/no-side-effects-in-computed-properties, max-len
return this.$t(`tip${tipNumber}`);
},
showRestingBanner () {
return !this.bannerHidden && this.user.preferences.sleep;
return !this.bannerHidden && this.user && this.user.preferences.sleep;
},
noMargin () {
return ['privateMessages'].includes(this.$route.name);
},
hideFooter () {
return ['privateMessages'].includes(this.$route.name);
},
},
created () {
@@ -359,7 +369,8 @@ export default {
return response;
}, error => {
if (error.response.status >= 400) {
this.checkForBannedUser(error);
const isBanned = this.checkForBannedUser(error);
if (isBanned === true) return null; // eslint-disable-line consistent-return
// Don't show errors from getting user details. These users have delete their account,
// but their chat message still exists.
@@ -377,7 +388,8 @@ export default {
// TODO use a specific error like NotificationNotFound instead of checking for the string
const invalidUserMessage = [this.$t('invalidCredentials'), 'Missing authentication headers.'];
if (invalidUserMessage.indexOf(errorMessage) !== -1) {
this.$store.dispatch('auth:logout');
this.$store.dispatch('auth:logout', { redirectToLogin: true });
return null;
}
// Most server errors should return is click to dismiss errors, with some exceptions
@@ -527,7 +539,7 @@ export default {
// Case where user is not logged in
if (!parseSettings) {
return;
return false;
}
const bannedMessage = this.$t('accountSuspended', {
@@ -535,9 +547,10 @@ export default {
userId: parseSettings.auth.apiId,
});
if (errorMessage !== bannedMessage) return;
if (errorMessage !== bannedMessage) return false;
this.$root.$emit('bv::show::modal', 'banned-account');
this.$store.dispatch('auth:logout', { redirectToLogin: true });
return true;
},
initializeModalStack () {
// Manage modals
@@ -583,6 +596,25 @@ export default {
if (modalBefore) this.$root.$emit('bv::show::modal', modalBefore, { fromRoot: true });
});
// Dismiss modal aggressively. Pass a modal ID to remove a modal instance from the stack
// (both the stack entry itself and its "prev" reference) so we don't reopen it
this.$root.$on('habitica::dismiss-modal', oldModal => {
if (!oldModal) return;
this.$root.$emit('bv::hide::modal', oldModal);
let removeIndex = this.$store.state.modalStack
.map(modal => modal.modalId)
.indexOf(oldModal);
if (removeIndex >= 0) {
this.$store.state.modalStack.splice(removeIndex, 1);
}
removeIndex = this.$store.state.modalStack
.map(modal => modal.prev)
.indexOf(oldModal);
if (removeIndex >= 0) {
delete this.$store.state.modalStack[removeIndex].prev;
}
});
},
validStack (modalStack) {
const modalsThatCanShowTwice = ['profile'];
@@ -712,5 +744,6 @@ export default {
<style src="@/assets/css/sprites/spritesmith-main-24.css"></style>
<style src="@/assets/css/sprites/spritesmith-main-25.css"></style>
<style src="@/assets/css/sprites/spritesmith-main-26.css"></style>
<style src="@/assets/css/sprites/spritesmith-main-27.css"></style>
<style src="@/assets/css/sprites.css"></style>
<style src="smartbanner.js/dist/smartbanner.min.css"></style>

View File

@@ -1,17 +1,17 @@
.quest_dysheartener {
background: url("~@/assets/images/quest_dysheartener.gif") no-repeat;
.quest_lostMasterclasser4 {
background: url("~@/assets/images/animated/quest_lostMasterclasser4.gif") no-repeat;
width: 219px;
height: 219px;
}
.quest_lostMasterclasser4 {
background: url("~@/assets/images/quest_lostMasterclasser4.gif") no-repeat;
width: 219px;
height: 219px;
.Pet_HatchingPotion_Dessert {
background: url("~@/assets/images/animated/Pet_HatchingPotion_Dessert.gif") no-repeat;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Veggie {
background: url("~@/assets/images/Pet_HatchingPotion_Veggie.gif") no-repeat;
background: url("~@/assets/images/animated/Pet_HatchingPotion_Veggie.gif") no-repeat;
width: 68px;
height: 68px;
}
@@ -51,7 +51,7 @@
/* Critical */
.weapon_special_critical {
background: url("~@/assets/images/weapon_special_critical.gif") no-repeat;
background: url("~@/assets/images/animated/weapon_special_critical.gif") no-repeat;
width: 90px;
height: 90px;
margin-left:-12px;
@@ -68,32 +68,32 @@
}
.head_special_0 {
background: url("~@/assets/images/BackerOnly-Equip-ShadeHelmet.gif") no-repeat;
background: url("~@/assets/images/animated/BackerOnly-Equip-ShadeHelmet.gif") no-repeat;
}
.head_special_1 {
background: url("~@/assets/images/ContributorOnly-Equip-CrystalHelmet.gif") no-repeat;
background: url("~@/assets/images/animated/ContributorOnly-Equip-CrystalHelmet.gif") no-repeat;
margin-top: 3px;
}
.broad_armor_special_0,.slim_armor_special_0 {
background: url("~@/assets/images/BackerOnly-Equip-ShadeArmor.gif") no-repeat;
background: url("~@/assets/images/animated/BackerOnly-Equip-ShadeArmor.gif") no-repeat;
}
.broad_armor_special_1,.slim_armor_special_1 {
background: url("~@/assets/images/ContributorOnly-Equip-CrystalArmor.gif") no-repeat;
background: url("~@/assets/images/animated/ContributorOnly-Equip-CrystalArmor.gif") no-repeat;
}
.shield_special_0 {
background: url("~@/assets/images/BackerOnly-Shield-TormentedSkull.gif") no-repeat;
background: url("~@/assets/images/animated/BackerOnly-Shield-TormentedSkull.gif") no-repeat;
}
.weapon_special_0 {
background: url("~@/assets/images/BackerOnly-Weapon-DarkSoulsBlade.gif") no-repeat;
background: url("~@/assets/images/animated/BackerOnly-Weapon-DarkSoulsBlade.gif") no-repeat;
}
.Pet-Wolf-Cerberus {
width: 105px;
height: 72px;
background: url("~@/assets/images/BackerOnly-Pet-CerberusPup.gif") no-repeat;
background: url("~@/assets/images/animated/BackerOnly-Pet-CerberusPup.gif") no-repeat;
}
.broad_armor_special_ks2019, .slim_armor_special_ks2019, .eyewear_special_ks2019, .head_special_ks2019, .shield_special_ks2019 {
@@ -102,29 +102,29 @@
}
.broad_armor_special_ks2019, .slim_armor_special_ks2019 {
background: url("~@/assets/images/BackerOnly-Equip-MythicGryphonArmor.gif") no-repeat;
background: url("~@/assets/images/animated/BackerOnly-Equip-MythicGryphonArmor.gif") no-repeat;
}
.eyewear_special_ks2019 {
background: url("~@/assets/images/BackerOnly-Equip-MythicGryphonVisor.gif") no-repeat;
background: url("~@/assets/images/animated/BackerOnly-Equip-MythicGryphonVisor.gif") no-repeat;
}
.head_special_ks2019 {
background: url("~@/assets/images/BackerOnly-Equip-MythicGryphonHelm.gif") no-repeat;
background: url("~@/assets/images/animated/BackerOnly-Equip-MythicGryphonHelm.gif") no-repeat;
}
.shield_special_ks2019 {
background: url("~@/assets/images/BackerOnly-Equip-MythicGryphonShield.gif") no-repeat;
background: url("~@/assets/images/animated/BackerOnly-Equip-MythicGryphonShield.gif") no-repeat;
}
.weapon_special_ks2019 {
background: url("~@/assets/images/BackerOnly-Equip-MythicGryphonGlaive.gif") no-repeat;
background: url("~@/assets/images/animated/BackerOnly-Equip-MythicGryphonGlaive.gif") no-repeat;
width: 120px;
height: 120px;
}
.Pet-Gryphon-Gryphatrice {
background: url("~@/assets/images/BackerOnly-Pet-Gryphatrice.gif") no-repeat;
background: url("~@/assets/images/animated/BackerOnly-Pet-Gryphatrice.gif") no-repeat;
width: 81px;
height: 99px;
}
@@ -135,11 +135,28 @@
}
.Mount_Head_Gryphon-Gryphatrice {
background: url("~@/assets/images/BackerOnly-Mount-Head-Gryphatrice.gif") no-repeat;
background: url("~@/assets/images/animated/BackerOnly-Mount-Head-Gryphatrice.gif") no-repeat;
}
.Mount_Body_Gryphon-Gryphatrice {
background: url("~@/assets/images/BackerOnly-Mount-Body-Gryphatrice.gif") no-repeat;
background: url("~@/assets/images/animated/BackerOnly-Mount-Body-Gryphatrice.gif") no-repeat;
}
.background_airship, .background_clocktower, .background_steamworks {
width: 141px;
height: 147px;
}
.background_airship {
background: url("~@/assets/images/animated/background_airship.gif") no-repeat;
}
.background_clocktower {
background: url("~@/assets/images/animated/background_clocktower.gif") no-repeat;
}
.background_steamworks {
background: url("~@/assets/images/animated/background_steamworks.gif") no-repeat;
}
/* FIXME figure out how to handle customize menu!!

View File

@@ -1,60 +1,84 @@
.promo_armoire_backgrounds_202001 {
.promo_april_fools_2020 {
background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: 0px -175px;
background-position: -445px -184px;
width: 423px;
height: 147px;
}
.promo_g1g1_2019 {
.promo_armoire_backgrounds_202004 {
background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: 0px -471px;
width: 357px;
height: 144px;
}
.promo_mystery_202001 {
background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -241px -616px;
width: 279px;
background-position: 0px -500px;
width: 423px;
height: 147px;
}
.promo_snowballs {
.promo_egg_quest {
background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: 0px 0px;
width: 420px;
height: 174px;
background-position: -355px -648px;
width: 354px;
height: 147px;
}
.promo_mystery_202004 {
background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -875px 0px;
width: 282px;
height: 147px;
}
.promo_pastel_skin_hair {
background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: 0px -648px;
width: 354px;
height: 147px;
}
.customize-option.promo_pastel_skin_hair {
background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -25px -663px;
width: 60px;
height: 60px;
}
.promo_seasonal_shop_spring {
background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -875px -299px;
width: 162px;
height: 138px;
}
.promo_shiny_seeds {
background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -424px -500px;
width: 360px;
height: 147px;
}
.promo_spring_2019 {
background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: 0px -337px;
width: 432px;
height: 162px;
}
.promo_spring_2020 {
background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -445px 0px;
width: 429px;
height: 183px;
}
.promo_spring_potions_2020 {
background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -433px -337px;
width: 423px;
height: 147px;
}
.promo_take_this {
background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -358px -471px;
background-position: -1026px -148px;
width: 96px;
height: 69px;
}
.promo_winter_potions_2020 {
.scene_hat_guild {
background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -424px -175px;
width: 423px;
height: 147px;
background-position: 0px 0px;
width: 444px;
height: 336px;
}
.promo_winter_quests_bundle {
.scene_meditation {
background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: 0px -323px;
width: 423px;
height: 147px;
}
.promo_winter_wonderland_2019 {
background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -424px -323px;
width: 402px;
height: 147px;
}
.promo_winter_wonderland_2020 {
background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -421px 0px;
width: 468px;
height: 147px;
}
.scene_list {
background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: 0px -616px;
width: 240px;
height: 195px;
background-position: -875px -148px;
width: 150px;
height: 150px;
}

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

Some files were not shown because too many files have changed in this diff Show More