From a05c7d2c6cc1e5eb57e50f3b3af2b4fbe65b217f Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Fri, 20 Dec 2019 12:45:01 +0100 Subject: [PATCH 01/43] fix(onboarding): make sure migration does not fail with missing field --- .../users/20191125_onboarding_achievements.js | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/migrations/users/20191125_onboarding_achievements.js b/migrations/users/20191125_onboarding_achievements.js index 290db87eca..eb77b48510 100644 --- a/migrations/users/20191125_onboarding_achievements.js +++ b/migrations/users/20191125_onboarding_achievements.js @@ -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}`); From da380567e9cd898f548bbc78a32a36ec5e21eccd Mon Sep 17 00:00:00 2001 From: Melior Date: Fri, 20 Dec 2019 17:16:46 +0100 Subject: [PATCH 02/43] 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/ --- website/common/locales/de/achievements.json | 15 +++- website/common/locales/es/gear.json | 4 +- .../common/locales/es_419/achievements.json | 10 ++- website/common/locales/fr/achievements.json | 25 ++++++- website/common/locales/ja/achievements.json | 8 ++- website/common/locales/ja/backgrounds.json | 16 ++++- website/common/locales/ja/generic.json | 4 +- website/common/locales/ja/npc.json | 3 +- .../common/locales/la/loadingscreentips.json | 72 +++++++++---------- website/common/locales/la/overview.json | 20 +++--- website/common/locales/la/rebirth.json | 11 +-- website/common/locales/la/spells.json | 14 ++-- .../common/locales/pt_BR/achievements.json | 25 ++++++- website/common/locales/pt_BR/generic.json | 4 +- website/common/locales/pt_BR/groups.json | 4 +- website/common/locales/pt_BR/limited.json | 4 +- website/common/locales/pt_BR/npc.json | 3 +- .../common/locales/pt_BR/questscontent.json | 2 +- website/common/locales/sv/gear.json | 14 +++- website/common/locales/zh/achievements.json | 25 ++++++- website/common/locales/zh/generic.json | 4 +- website/common/locales/zh/limited.json | 2 +- website/common/locales/zh/npc.json | 3 +- website/common/locales/zh/questscontent.json | 2 +- 24 files changed, 211 insertions(+), 83 deletions(-) diff --git a/website/common/locales/de/achievements.json b/website/common/locales/de/achievements.json index e8a3a9f322..f2d20a3996 100644 --- a/website/common/locales/de/achievements.json +++ b/website/common/locales/de/achievements.json @@ -40,5 +40,18 @@ "achievementPrimedForPaintingText": "Hat alle weißen Haustiere gesammelt.", "achievementPearlyProText": "Hat alle weißen Reittiere gezähmt.", "achievementPearlyPro": "Perlweiß-Profi", - "achievementPrimedForPainting": "Grundierung gemalt" + "achievementPrimedForPainting": "Grundierung gemalt", + "achievementCreatedTask": "Erstelle eine Aufgabe", + "onboardingCompleteDesc": "Du hast durch das Abschließen der Liste 5 Erfolge freigeschaltet und 100 Goldstücke verdient.", + "earnedAchievement": "Du hast einen Erfolg freigeschaltet!", + "achievementPurchasedEquipmentModalText": "Durch Ausrüstung kann Dein Avatar personalisiert und die Attributswerte erhöht werden", + "achievementPurchasedEquipment": "Erwerbe Ausrüstung", + "achievementFedPetModalText": "Es gibt viele verschiedene Arten an Futter, aber Haustiere können wählerisch sein", + "achievementFedPet": "Füttere ein Haustier", + "achievementHatchedPet": "Schlüpfe ein Haustier", + "hideAchievements": "<%= category %> ausblenden", + "showAllAchievements": "Alle <%= category %> anzeigen", + "viewAchievements": "Erfolge ansehen", + "letsGetStarted": "Los geht's!", + "onboardingProgress": "<%= percentage %>% Fortschritt" } diff --git a/website/common/locales/es/gear.json b/website/common/locales/es/gear.json index 5914cac590..ccb0eebe53 100644 --- a/website/common/locales/es/gear.json +++ b/website/common/locales/es/gear.json @@ -1816,5 +1816,7 @@ "weaponArmoireNephriteBowText": "Arco de Nerfita", "armorSpecialKS2019Text": "Armadura Mítica de Grifo", "weaponMystery201911Notes": "La bola de cristal encima del báculo puede revelarte el futuro, ¡Pero cuidado! Usando esa peligrosa sabiduría puede cambiar una persona de maneras inesperadas. No otorga ningún beneficio Artículo de Suscriptor de noviembre de 2019.", - "weaponMystery201911Text": "Báculo de cristal atractivo" + "weaponMystery201911Text": "Báculo de cristal atractivo", + "weaponArmoireFloridFanNotes": "Te encariñan los pliegues de seda cuando no están en uso. Incrementa la Constitución en <%= con %>. Armario Encantado: Objeto Independiente.", + "weaponArmoireFloridFanText": "Abanico Florido" } diff --git a/website/common/locales/es_419/achievements.json b/website/common/locales/es_419/achievements.json index 57d33adf2e..ccfb82fcb0 100644 --- a/website/common/locales/es_419/achievements.json +++ b/website/common/locales/es_419/achievements.json @@ -24,5 +24,13 @@ "achievementAridAuthority": "Autoridad Árida", "achievementDustDevilModalText": "¡Has coleccionado todas las Mascotas Desierto!", "achievementDustDevilText": "Ha coleccionado todas las Mascotas Desierto.", - "achievementDustDevil": "Diablo de Polvo" + "achievementDustDevil": "Diablo de Polvo", + "hideAchievements": "Ocultar <%= category %>", + "showAllAchievements": "Ver todo <%= category %>", + "onboardingCompleteDesc": "Obtuviste 5 logros y 100 monedas de oro por completar la lista.", + "earnedAchievement": "¡Has completado un logro!", + "viewAchievements": "Ver los logros", + "letsGetStarted": "¡Comencemos!", + "onboardingProgress": "<%= percentage %>% de progreso", + "gettingStartedDesc": "Creemos una tarea, completémosla y luego mira tus recompensas. ¡Completarás 5 logros y ganarás 100 monedas de oro cuando acabes!" } diff --git a/website/common/locales/fr/achievements.json b/website/common/locales/fr/achievements.json index 6e52bf2f67..9ca1d17092 100644 --- a/website/common/locales/fr/achievements.json +++ b/website/common/locales/fr/achievements.json @@ -40,5 +40,28 @@ "achievementPearlyPro": "Une vraie perle", "achievementPrimedForPaintingModalText": "Vous avez collecté tous les familiers blancs !", "achievementPrimedForPaintingText": "A collecté tous les familiers blancs.", - "achievementPrimedForPainting": "Sous-couche de peinture" + "achievementPrimedForPainting": "Sous-couche de peinture", + "achievementPurchasedEquipmentModalText": "L'équipement est une façon de customiser votre avatar et d'améliorer vos stats", + "achievementPurchasedEquipmentText": "A acheté sa première pièce d'équipement.", + "achievementPurchasedEquipment": "Achetez de l'équipement", + "achievementFedPetModalText": "Il y a plusieurs types de nourriture, mais les familiers peuvent être capricieux", + "achievementFedPetText": "A nourri son premier familier.", + "achievementFedPet": "Donnez à manger à un familier", + "achievementHatchedPetModalText": "Rendez-vous dans votre inventaire et essayez de combiner une potion d'éclosion et un œuf", + "achievementHatchedPetText": "A fait éclore son premier familier.", + "achievementHatchedPet": "Faites éclore un familier", + "achievementCompletedTaskModalText": "Valider n'importe laquelle de vos tâches pour remporter des récompenses", + "achievementCompletedTaskText": "A rempli sa première tâche.", + "achievementCompletedTask": "Valider une tâche", + "achievementCreatedTaskModalText": "Ajouter une tâche pour quelque chose que vous voudriez accomplir cette semaine", + "achievementCreatedTaskText": "A créé sa première tâche.", + "achievementCreatedTask": "Créer une tâche", + "hideAchievements": "Cacher <%= category %>", + "showAllAchievements": "Voir tout <%= category %>", + "onboardingCompleteDesc": "Vous avec remporté 5 succès et 100 pièces d'or pour avoir complété la liste.", + "earnedAchievement": "Vous avez remporté un succès !", + "viewAchievements": "Voir les succès", + "letsGetStarted": "Commençons !", + "onboardingProgress": "<%= percentage %>% de progression", + "gettingStartedDesc": "Créons une tâche, pour ensuite la valider et regarder le résultat. Vous gagnerez 5 succès et 100 pièces d'or quand vous aurez fini !" } diff --git a/website/common/locales/ja/achievements.json b/website/common/locales/ja/achievements.json index b149f80060..51c6c595be 100644 --- a/website/common/locales/ja/achievements.json +++ b/website/common/locales/ja/achievements.json @@ -34,5 +34,11 @@ "achievementKickstarter2019Text": "2019年のPin Kickstarterプロジェクトで支援しました", "achievementUndeadUndertaker": "不死の葬儀屋", "achievementUndeadUndertakerModalText": "ゾンビの乗騎をすべて手なずけました!", - "achievementUndeadUndertakerText": "ゾンビの乗騎をすべて手なずけました。" + "achievementUndeadUndertakerText": "ゾンビの乗騎をすべて手なずけました。", + "onboardingCompleteDesc": "リストを完了したため5つの実績100ゴールドを獲得しました。", + "viewAchievements": "実績を見る", + "letsGetStarted": "はじめましょう!", + "onboardingProgress": "<%= percentage %>% 進捗", + "gettingStartedDesc": "タスクを作成して、完了して、ごほうびをチェックしましょう。 一度やると5つの実績100ゴールドを獲得できます!", + "earnedAchievement": "実績を獲得しました!" } diff --git a/website/common/locales/ja/backgrounds.json b/website/common/locales/ja/backgrounds.json index 8ef13ef2d5..d2f2ca7f4a 100644 --- a/website/common/locales/ja/backgrounds.json +++ b/website/common/locales/ja/backgrounds.json @@ -471,5 +471,19 @@ "backgroundAutumnFlowerGardenNotes": "秋の花園の暖かな空気を吸い込みましょう。", "backgroundAutumnFlowerGardenText": "秋の花園", "backgrounds092019": "セット64:2019年9月リリース", - "backgroundMonsterMakersWorkshopNotes": "モンスターメーカーの工房で、疑惑の技術を実験しましょう。" + "backgroundMonsterMakersWorkshopNotes": "モンスターメーカーの工房で、疑惑の技術を実験しましょう。", + "backgroundHolidayMarketNotes": "祭日の市場で、すばらしい贈り物と飾りを探しましょう。", + "backgroundHolidayMarketText": "祭日の市場", + "backgroundFlyingInAThunderstormNotes": "思い切ってできる限り近くまで荒々しい雷雨を追いかけましょう。", + "backgroundFlyingInAThunderstormText": "荒々しい雷雨", + "backgroundFarmersMarketNotes": "農産物直売所でとびきり新鮮な食べ物を買いましょう。", + "backgroundFarmersMarketText": "農産物直売所", + "backgrounds112019": "セット66:2019年11月リリース", + "backgroundHolidayWreathText": "祭日のリース", + "backgroundWinterNocturneText": "冬の夜想曲", + "backgroundWinterNocturneNotes": "冬の夜想曲の星明かりを浴びましょう。", + "backgroundHolidayWreathNotes": "かぐわしい祭日のリースであなたのアバターを飾りましょう。", + "backgrounds122019": "セット67:2019年12月リリース", + "backgroundPotionShopNotes": "薬屋であらゆる病気の万能薬を探しましょう。", + "backgroundPotionShopText": "薬屋" } diff --git a/website/common/locales/ja/generic.json b/website/common/locales/ja/generic.json index 19f03db5a4..fef2ce18e8 100644 --- a/website/common/locales/ja/generic.json +++ b/website/common/locales/ja/generic.json @@ -294,5 +294,7 @@ "options": "オプション", "demo": "デモ", "loadEarlierMessages": "以前のメッセージを読み込む", - "finish": "終了" + "finish": "終了", + "congratulations": "おめでとうございます!", + "onboardingAchievs": "初心者入門の実績" } diff --git a/website/common/locales/ja/npc.json b/website/common/locales/ja/npc.json index d1acd5b1d8..0389a589ff 100644 --- a/website/common/locales/ja/npc.json +++ b/website/common/locales/ja/npc.json @@ -169,5 +169,6 @@ "imReady": "Habitica をはじめる", "limitedOffer": "<%= date %>まで購入可能", "paymentAutoRenew": "この寄付会員はキャンセルするまで自動更新されます。もしこの寄付会員をキャンセルする必要があるときは、設定からキャンセルできます。", - "paymentCanceledDisputes": "キャンセルの承認のメールをあなたに送りました。もしそのメールが見つからない場合は、今後の請求についての論争を防ぐために、私たちにご連絡をお願いいたします。" + "paymentCanceledDisputes": "キャンセルの承認のメールをあなたに送りました。もしそのメールが見つからない場合は、今後の請求についての論争を防ぐために、私たちにご連絡をお願いいたします。", + "cannotUnpinItem": "このアイテムはピン留めを外せません。" } diff --git a/website/common/locales/la/loadingscreentips.json b/website/common/locales/la/loadingscreentips.json index 20dd7dcbc4..91322e8a5d 100755 --- a/website/common/locales/la/loadingscreentips.json +++ b/website/common/locales/la/loadingscreentips.json @@ -1,38 +1,38 @@ { - "tipTitle": "Monitus #<%= tipNumber %>", - "tip1": "Check tasks on the go with the Habitica mobile apps.", - "tip2": "Click any equipment to see a preview, or equip it instantly by clicking the star in its upper-left corner!", - "tip3": "Use emoji to quickly differentiate between your tasks.", - "tip4": "Use the # sign before a task name to make it really big!", - "tip5": "It’s best to use skills that cause buffs in the morning so they last longer.", - "tip6": "Hover over a task and click the dots to access advanced task controls, such as the ability to push tasks to the top/bottom of your list.", - "tip7": "Some backgrounds connect perfectly if Party members use the same background. Ex: Mountain Lake, Pagodas, and Rolling Hills.", - "tip8": "Send a Message to someone by clicking their name in chat and then clicking the envelope icon at the top of their profile!", - "tip9": "Use the filters + search bar in the Inventories, Shops, Guilds, and Challenges to quickly find what you want.", - "tip10": "You can win gems by competing in Challenges. New ones are added every day!", - "tip11": "Having more than four Party members increases accountability!", - "tip12": "Add checklists to your To-Dos to multiply your rewards!", - "tip13": "Click “Tags” on your task page to make an unwieldy task list very manageable!", - "tip14": "You can add headers or inspirational quotes to your list as Habits with no (+/-).", - "tip15": "Complete all the Masterclasser Quest-lines to learn about Habitica’s secret lore.", - "tip16": "Click the link to the Data Display Tool in the footer for valuable insights on your progress.", - "tip17": "Use the mobile apps to set reminders for your tasks.", - "tip18": "Habits that are just positive or just negative gradually “fade” and return to yellow.", - "tip19": "Boost your Intelligence Stat to gain more experience when you complete a task.", - "tip20": "Boost your Perception Stat to get more drops and gold.", - "tip21": "Boost your Strength Stat to do more boss damage or get critical hits.", - "tip22": "Boost your Constitution Stat to lessen the damage from incomplete Dailies.", - "tip23": "Reach level 100 to unlock the Orb of Rebirth for free and start a new adventure!", - "tip24": "Have a question? Ask in the Habitica Help Guild!", - "tip25": "The four seasonal Grand Galas start near the solstices and equinoxes.", - "tip26": "You can look for a Party or find Party members in the Party Wanted Guild!", - "tip27": "Did a Daily yesterday, but forgot to check it off? Don't worry! With Record Yesterday's Activity, you'll have a chance to record what you did before starting your new day.", - "tip28": "Set a Custom Day Start under User Icon > Settings to control when your day restarts.", - "tip29": "Complete all your Dailies to get a Perfect Day Buff that increases your Stats!", - "tip30": "You can invite people to Guilds, not just Parties.", - "tip31": "Check out the pre-made lists in the Library of Tasks and Challenges Guild for example tasks.", - "tip32": "Lots of Habitica’s code, art, and writing is made by volunteer contributors! Head to the Aspiring Legends Guild to help.", - "tip33": "Check out The Bulletin Board Guild for news about Guilds, Challenges, and other player-created events - and announce your own there!", - "tip34": "Occasionally re-evaluate your tasks to make sure they’re up-to-date!", - "tip35": "Users who are part of a Group Plan gain the ability to assign tasks to other users in that Group for extra task management and accountability." + "tipTitle": "Monitus #<%= tipNumber %>", + "tip1": "Check tasks on the go with the Habitica mobile apps.", + "tip2": "Click any equipment to see a preview, or equip it instantly by clicking the star in its upper-left corner!", + "tip3": "Utere emoji ut inter munera tua celeriter distinguas.", + "tip4": "Utere signum # ante nominem muneris ut id magnissimum faciat!", + "tip5": "It’s best to use skills that cause buffs in the morning so they last longer.", + "tip6": "Hover over a task and click the dots to access advanced task controls, such as the ability to push tasks to the top/bottom of your list.", + "tip7": "Some backgrounds connect perfectly if Party members use the same background. Ex: Mountain Lake, Pagodas, and Rolling Hills.", + "tip8": "Send a Message to someone by clicking their name in chat and then clicking the envelope icon at the top of their profile!", + "tip9": "Use the filters + search bar in the Inventories, Shops, Guilds, and Challenges to quickly find what you want.", + "tip10": "You can win gems by competing in Challenges. New ones are added every day!", + "tip11": "Having more than four Party members increases accountability!", + "tip12": "Add checklists to your To-Dos to multiply your rewards!", + "tip13": "Click “Tags” on your task page to make an unwieldy task list very manageable!", + "tip14": "You can add headers or inspirational quotes to your list as Habits with no (+/-).", + "tip15": "Complete all the Masterclasser Quest-lines to learn about Habitica’s secret lore.", + "tip16": "Click the link to the Data Display Tool in the footer for valuable insights on your progress.", + "tip17": "Use the mobile apps to set reminders for your tasks.", + "tip18": "Habits that are just positive or just negative gradually “fade” and return to yellow.", + "tip19": "Boost your Intelligence Stat to gain more experience when you complete a task.", + "tip20": "Boost your Perception Stat to get more drops and gold.", + "tip21": "Boost your Strength Stat to do more boss damage or get critical hits.", + "tip22": "Boost your Constitution Stat to lessen the damage from incomplete Dailies.", + "tip23": "Reach level 100 to unlock the Orb of Rebirth for free and start a new adventure!", + "tip24": "Have a question? Ask in the Habitica Help Guild!", + "tip25": "The four seasonal Grand Galas start near the solstices and equinoxes.", + "tip26": "You can look for a Party or find Party members in the Party Wanted Guild!", + "tip27": "Did a Daily yesterday, but forgot to check it off? Don't worry! With Record Yesterday's Activity, you'll have a chance to record what you did before starting your new day.", + "tip28": "Set a Custom Day Start under User Icon > Settings to control when your day restarts.", + "tip29": "Complete all your Dailies to get a Perfect Day Buff that increases your Stats!", + "tip30": "You can invite people to Guilds, not just Parties.", + "tip31": "Check out the pre-made lists in the Library of Tasks and Challenges Guild for example tasks.", + "tip32": "Lots of Habitica’s code, art, and writing is made by volunteer contributors! Head to the Aspiring Legends Guild to help.", + "tip33": "Check out The Bulletin Board Guild for news about Guilds, Challenges, and other player-created events - and announce your own there!", + "tip34": "Occasionally re-evaluate your tasks to make sure they’re up-to-date!", + "tip35": "Users who are part of a Group Plan gain the ability to assign tasks to other users in that Group for extra task management and accountability." } diff --git a/website/common/locales/la/overview.json b/website/common/locales/la/overview.json index 7e9880e410..ce7da5864d 100755 --- a/website/common/locales/la/overview.json +++ b/website/common/locales/la/overview.json @@ -1,14 +1,10 @@ { - "needTips": "Aliquasne instructiones incipiente requiris? Ducens simplex hic est!", - - "step1": "Gradus 1: Munera Inscribere", - "webStep1Text": "Habitica is nothing without real-world goals, so enter a few tasks. You can add more later as you think of them! All tasks can be added by clicking the green \"Create\" button.\n* **Set up [To-Dos](http://habitica.wikia.com/wiki/To-Dos):** Enter tasks you do once or rarely in the To-Dos column, one at a time. You can click on the tasks to edit them and add checklists, due dates, and more!\n* **Set up [Dailies](http://habitica.wikia.com/wiki/Dailies):** Enter activities you need to do daily or on a particular day of the week, month, or year in the Dailies column. Click task to edit when it will be due and/or set a start date. You can also make it due on a repeating basis, for example, every 3 days.\n* **Set up [Habits](http://habitica.wikia.com/wiki/Habits):** Enter habits you want to establish in the Habits column. You can edit the Habit to change it to just a good habit :heavy_plus_sign: or a bad habit :heavy_minus_sign:\n* **Set up [Rewards](http://habitica.wikia.com/wiki/Rewards):** In addition to the in-game Rewards offered, add activities or treats which you want to use as a motivation to the Rewards column. It's important to give yourself a break or allow some indulgence in moderation!\n* If you need inspiration for which tasks to add, you can look at the wiki's pages on [Sample Habits](http://habitica.wikia.com/wiki/Sample_Habits), [Sample Dailies](http://habitica.wikia.com/wiki/Sample_Dailies), [Sample To-Dos](http://habitica.wikia.com/wiki/Sample_To-Dos), and [Sample Rewards](http://habitica.wikia.com/wiki/Sample_Custom_Rewards).", - - "step2": "Gradus 2: Puncta Facientibus Munera in Vita Naturali Potiri", - "webStep2Text": "Nunc, tuos scopos ex tuo indice assultare incipe! [Experientiam](http://habitica.wikia.com/wiki/Experience_Points), quae te increscere tuum gradum adiuvat, et [Aurum](http://habitica.wikia.com/wiki/Gold_Points), quo Praemia emas, acquires dum munera comples et notas. Si in habitus malos recedas aut tua cotidiana desis, [Valitudonem](http://habitica.wikia.com/wiki/Health_Points) perdas. Ita Habitica barrae Experientiae Valitudonisque sunt indicatores geniati tui progressui ad tuos scopos. Notabis ut tua vita in meliorem fiet dum tua persona in ludo proficit.", - - "step3": "Gradus 3: Habitica Explorare et Adaptare", - "webStep3Text": "Once you're familiar with the basics, you can get even more out of Habitica with these nifty features:\n * Organize your tasks with [tags](http://habitica.wikia.com/wiki/Tags) (edit a task to add them).\n * Customize your [avatar](http://habitica.wikia.com/wiki/Avatar) by clicking the user icon in the upper-right corner.\n * Buy your [Equipment](http://habitica.wikia.com/wiki/Equipment) under Rewards or from the [Shops](<%= shopUrl %>), and change it under [Inventory > Equipment](<%= equipUrl %>).\n * Connect with other users via the [Tavern](http://habitica.wikia.com/wiki/Tavern).\n * Starting at Level 3, hatch [Pets](http://habitica.wikia.com/wiki/Pets) by collecting [eggs](http://habitica.wikia.com/wiki/Eggs) and [hatching potions](http://habitica.wikia.com/wiki/Hatching_Potions). [Feed](http://habitica.wikia.com/wiki/Food) them to create [Mounts](http://habitica.wikia.com/wiki/Mounts).\n * At level 10: Choose a particular [class](http://habitica.wikia.com/wiki/Class_System) and then use class-specific [skills](http://habitica.wikia.com/wiki/Skills) (levels 11 to 14).\n * Form a party with your friends (by clicking [Party](<%= partyUrl %>) in the navigation bar) to stay accountable and earn a Quest scroll.\n * Defeat monsters and collect objects on [quests](http://habitica.wikia.com/wiki/Quests) (you will be given a quest at level 15).", - - "overviewQuestions": "Have questions? Check out the [FAQ](<%= faqUrl %>)! If your question isn't mentioned there, you can ask for further help in the [Habitica Help guild](<%= helpGuildUrl %>).\n\nGood luck with your tasks!" + "needTips": "Aliquasne instructiones incipiente requiris? Ducens simplex hic est!", + "step1": "Gradus 1: Munera Inscribere", + "webStep1Text": "Habitica est nihil sine scopis vita naturalis, inscribe igitur pauca munera. Si plus cogitas, postmodum quae potes addere! Omnia munera deprimente globulum viridem nominatum \"Crea\" potent addere.\n* **Statue [Agenda](http://habitica.wikia.com/wiki/To-Dos):** Inscribe munera semel aut infrequent, in columna Agendis unum ad tempus. Munera potes deprimere ut quae recenseas et alba signorum et dies terminas et plus addas!\n* **Statue [Cotidiana](http://habitica.wikia.com/wiki/Dailies):** Inscribe agenda cotidiana aut in certa diei hebdomada aut mensis aut anni in columna Cotidiana. Deprime munus ut diem terminam recenseas et/aut diem initiantem statuas. Etiam frequentiam diei terminae potes assignare, exempli gratia, quaque tertia die.\n* **Statue [Habitus](http://habitica.wikia.com/wiki/Habits):** Inscribe habitus volentis statuere in columna Habitibus. Habitum potes recensere ut mutes in habitum solum bonum :heavy_plus_sign: aut habitum solum malum :heavy_minus_sign:\n* **Statue [Praemia](http://habitica.wikia.com/wiki/Rewards):** Praeter praemia oblatos intra ludum, adde actiones et libita quos vis uti pro incitamento in columna Praemiis. Est magnus, in moderationem, quiescere aut indulgere!\n* Si inspirationem de quibus muneribus addituris requiris, potes specere paginae wiki de [Habitibus Exemplis](http://habitica.wikia.com/wiki/Sample_Habits), [Cotidianis Exemplis](http://habitica.wikia.com/wiki/Sample_Dailies), [Agendis Exemplis](http://habitica.wikia.com/wiki/Sample_To-Dos), et [Praemiis Exemplis](http://habitica.wikia.com/wiki/Sample_Custom_Rewards).", + "step2": "Gradus 2: Puncta Facientibus Munera in Vita Naturali Potiri", + "webStep2Text": "Nunc, tuos scopos ex tuo indice assultare incipe! [Experientiam](http://habitica.wikia.com/wiki/Experience_Points), quae te increscere tuum gradum adiuvat, et [Aurum](http://habitica.wikia.com/wiki/Gold_Points), quo Praemia emas, acquires dum munera comples et notas. Si in habitus malos recedas aut tua cotidiana desis, [Valitudonem](http://habitica.wikia.com/wiki/Health_Points) perdas. Ita Habitica barrae Experientiae Valitudonisque sunt indicatores geniati tui progressui ad tuos scopos. Notabis ut tua vita in meliorem fiet dum tua persona in ludo proficit.", + "step3": "Gradus 3: Habitica Explorare et Adaptare", + "webStep3Text": "Once you're familiar with the basics, you can get even more out of Habitica with these nifty features:\n * Organize your tasks with [tags](http://habitica.wikia.com/wiki/Tags) (edit a task to add them).\n * Customize your [avatar](http://habitica.wikia.com/wiki/Avatar) by clicking the user icon in the upper-right corner.\n * Buy your [Equipment](http://habitica.wikia.com/wiki/Equipment) under Rewards or from the [Shops](<%= shopUrl %>), and change it under [Inventory > Equipment](<%= equipUrl %>).\n * Connect with other users via the [Tavern](http://habitica.wikia.com/wiki/Tavern).\n * Initians quando pervenis Gradum 3, hatch [Pets](http://habitica.wikia.com/wiki/Pets) by collecting [eggs](http://habitica.wikia.com/wiki/Eggs) and [hatching potions](http://habitica.wikia.com/wiki/Hatching_Potions). [Feed](http://habitica.wikia.com/wiki/Food) them to create [Mounts](http://habitica.wikia.com/wiki/Mounts).\n * Quando pervenis gradum 10: Choose a particular [class](http://habitica.wikia.com/wiki/Class_System) and then use class-specific [skills](http://habitica.wikia.com/wiki/Skills) (gradi 11, 12, 13, et 14).\n * Form a party with your friends (by clicking [Party](<%= partyUrl %>) in the navigation bar) to stay accountable and earn a Quest scroll.\n * Vince monstra et collige collect res in [investigationibus](http://habitica.wikia.com/wiki/Quests) (quando pervenis gradum 15, investigatio tibi dabitur).", + "overviewQuestions": "Have questions? Check out the [FAQ](<%= faqUrl %>)! If your question isn't mentioned there, you can ask for further help in the [Habitica Help guild](<%= helpGuildUrl %>).\n\nGood luck with your tasks!" } diff --git a/website/common/locales/la/rebirth.json b/website/common/locales/la/rebirth.json index 51ea997e47..8aab8128b1 100755 --- a/website/common/locales/la/rebirth.json +++ b/website/common/locales/la/rebirth.json @@ -18,12 +18,13 @@ "rebirthAchievement100": "You've begun a new adventure! This is Rebirth <%= number %> for you, and the highest Level you've attained is 100 or higher. To stack this Achievement, begin your next new adventure when you've reached at least 100!", "rebirthBegan": "Iter Novum inceptum esse", "rebirthText": "Itinera nova <%= rebirths %> incepta esse", - "rebirthOrb": "Used an Orb of Rebirth to start over after attaining Level <%= level %>.", - "rebirthOrb100": "Used an Orb of Rebirth to start over after attaining Level 100 or higher.", - "rebirthOrbNoLevel": "Used an Orb of Rebirth to start over.", + "rebirthOrb": "Orbis Renascientae usus est ut incipiat iterum post tenentem Gradum <%= level %>.", + "rebirthOrb100": "Orbis Renascientae usus est ut incipiat iterum post tenentem Gradum 100 aut altiorem.", + "rebirthOrbNoLevel": "Orbis Renascientae usus est ut incipiat iterum.", "rebirthPop": "Instantly restart your character as a Level 1 Warrior while retaining achievements, collectibles, and equipment. Your tasks and their history will remain but they will be reset to yellow. Your streaks will be removed except from challenge tasks. Your Gold, Experience, Mana, and the effects of all Skills will be removed. All of this will take effect immediately. For more information, see the wiki's Orb of Rebirth page.", "rebirthName": "Orbis Renascentiae", "reborn": "Renatus, gradus maximus <%= reLevel %>", "confirmReborn": "Esne certus?", - "rebirthComplete": "Renatus/a es!" -} \ No newline at end of file + "rebirthComplete": "Renatus/a es!", + "nextFreeRebirth": "<%= days %> diei usque ad Orbem Renascientae est GRATUM" +} diff --git a/website/common/locales/la/spells.json b/website/common/locales/la/spells.json index 4966f1289a..69a8105c13 100755 --- a/website/common/locales/la/spells.json +++ b/website/common/locales/la/spells.json @@ -35,21 +35,21 @@ "spellHealerHealAllText": "Benedictio", "spellHealerHealAllNotes": "Incantatio relaxans tua valitudinem Partium tuorum totorum restituit! (Secundum: ROB et INT)", "spellSpecialSnowballAuraText": "Viburnum", - "spellSpecialSnowballAuraNotes": "Turn a friend into a frosty snowman!", + "spellSpecialSnowballAuraNotes": "Unum amicum in virum nivis gelidum mutat!", "spellSpecialSaltText": "Sal", - "spellSpecialSaltNotes": "Reverse the spell that made you a snowman.", + "spellSpecialSaltNotes": "Incantationem quam te mutavit in virum nivis revertitur.", "spellSpecialSpookySparklesText": "Scintillationes Formidabiles", - "spellSpecialSpookySparklesNotes": "Turn your friend into a transparent pal!", + "spellSpecialSpookySparklesNotes": "Amicum tuum in perlucidum amicum mutat!", "spellSpecialOpaquePotionText": "Potio Turbida", - "spellSpecialOpaquePotionNotes": "Reverse the spell that made you transparent.", + "spellSpecialOpaquePotionNotes": "Incantationem quam te mutavit perlucidum revertitur.", "spellSpecialShinySeedText": "Fulgens Semen", "spellSpecialShinySeedNotes": "Unum amicum in laetum florem mutat!", "spellSpecialPetalFreePotionText": "Sine Folio Potio", - "spellSpecialPetalFreePotionNotes": "Reverse the spell that made you a flower.", + "spellSpecialPetalFreePotionNotes": "Incantationem quam te mutavit in florem revertitur.", "spellSpecialSeafoamText": "Spuma", - "spellSpecialSeafoamNotes": "Unum Amicum in Maritimum Monstrum Mutat!", + "spellSpecialSeafoamNotes": "Unum amicum in maritimum monstrum mutat!", "spellSpecialSandText": "Pulvis", - "spellSpecialSandNotes": "Reverse the spell that made you a sea star.", + "spellSpecialSandNotes": "Incantationem quam te mutavit in maritimum monstrum revertitur.", "partyNotFound": "Grex non repertus est", "targetIdUUID": "Debere \"targetId\" Utentem ID licitum esse.", "challengeTasksNoCast": "Non licet incantanti in muneribus provocationis.", diff --git a/website/common/locales/pt_BR/achievements.json b/website/common/locales/pt_BR/achievements.json index e1ff2d40b3..5f2424a1e4 100644 --- a/website/common/locales/pt_BR/achievements.json +++ b/website/common/locales/pt_BR/achievements.json @@ -40,5 +40,28 @@ "achievementPearlyPro": "Perolado Pro", "achievementPrimedForPaintingModalText": "Você coletou todos os Mascotes brancos!", "achievementPrimedForPaintingText": "Coletou todos os Mascotes brancos.", - "achievementPrimedForPainting": "Preparado para pintura" + "achievementPrimedForPainting": "Preparado para pintura", + "achievementPurchasedEquipmentModalText": "Equipamento é um meio de personalizar seu avatar e melhorar suas estatísticas", + "achievementPurchasedEquipmentText": "Comprou sua primeira peça de equipamento.", + "achievementPurchasedEquipment": "Comprar equipamento", + "achievementFedPetModalText": "Há diferentes tipos de comida, mas os mascotes podem ser exigentes", + "achievementFedPetText": "Alimentou seu primeiro mascote.", + "achievementFedPet": "Alimentar um Mascote", + "achievementHatchedPetModalText": "Vá até o seu inventário e tente combinar uma poção de eclosão e um ovo", + "achievementHatchedPetText": "Chocou seu primeiro mascote.", + "achievementHatchedPet": "Chocar um Mascote", + "achievementCompletedTaskModalText": "Marque qualquer uma das suas tarefas para ganhar recompensas", + "achievementCompletedTaskText": "Concluiu sua primeira tarefa.", + "achievementCompletedTask": "Concluir uma tarefa", + "achievementCreatedTaskModalText": "Adicione uma tarefa para algo que você gostaria de realizar esta semana", + "achievementCreatedTaskText": "Criou sua primeira tarefa.", + "achievementCreatedTask": "Criar uma Tarefa", + "hideAchievements": "Ocultar <%= category %>", + "showAllAchievements": "Exibir todos(as) <%= category %>", + "onboardingCompleteDesc": "Você ganhou 5 conquistas e 100 peças de ouro por completar a lista.", + "earnedAchievement": "Você ganhou uma conquista!", + "viewAchievements": "Visualizar Conquistas", + "letsGetStarted": "Vamos começar!", + "onboardingProgress": "<%= percentage %>% concluído", + "gettingStartedDesc": "Vamos criar uma tarefa, concluí-la e, então, conferir suas recompensas. Você ganhará 5 conquistas e 100 peças ouro assim que terminar!" } diff --git a/website/common/locales/pt_BR/generic.json b/website/common/locales/pt_BR/generic.json index 55a582c066..2cafc6d435 100644 --- a/website/common/locales/pt_BR/generic.json +++ b/website/common/locales/pt_BR/generic.json @@ -294,5 +294,7 @@ "options": "Opções", "demo": "Demonstração", "loadEarlierMessages": "Carregar mensagens anteriores", - "finish": "Finalizar" + "finish": "Finalizar", + "congratulations": "Parabéns!", + "onboardingAchievs": "Conquistas de integração" } diff --git a/website/common/locales/pt_BR/groups.json b/website/common/locales/pt_BR/groups.json index 2872a1c009..3bf24f14f3 100644 --- a/website/common/locales/pt_BR/groups.json +++ b/website/common/locales/pt_BR/groups.json @@ -161,10 +161,10 @@ "abuseFlagModalButton": "Reportar Violação", "abuseReported": "Obrigado por reportar essa violação. Os moderadores foram notificados.", "abuseAlreadyReported": "Você já reportou essa mensagem.", - "whyReportingPost": "Por quê você está denunciando esta publicação?", + "whyReportingPost": "Por que você está denunciando esta publicação?", "whyReportingPostPlaceholder": "Por favor, ajude nossos moderadores explicando qual violação você esta denunciando nesta publicação, como por exemplo: spam, palavrões, profanação religiosa, intolerância, insultos, conteúdo adulto e violência.", "optional": "Opcional", - "needsText": "Por favor digite uma mensagem.", + "needsText": "Por favor, digite uma mensagem.", "needsTextPlaceholder": "Digite sua mensagem aqui.", "copyMessageAsToDo": "Copiar mensagem como Afazer", "copyAsTodo": "Copiar como Afazer", diff --git a/website/common/locales/pt_BR/limited.json b/website/common/locales/pt_BR/limited.json index cc1cbed92f..61df00a9c0 100644 --- a/website/common/locales/pt_BR/limited.json +++ b/website/common/locales/pt_BR/limited.json @@ -147,8 +147,8 @@ "dateEndJanuary": "31 de Janeiro", "dateEndFebruary": "28 de fevereiro", "winterPromoGiftHeader": "Presenteie alguém com uma assinatura e ganhe outra grátis !", - "winterPromoGiftDetails1": "Apenas até o dia 15 de Janeiro, quando você presentear alguém com uma assinatura, você irá ganhar uma assinatura idêntica gratuitamente!", - "winterPromoGiftDetails2": "Hey, se você ou a outra pessoa já tiver uma assinatura ativa, a nova somente irá iniciar depois da assinatura atual ser cancelada ou expirar. Muito obrigado por todo o apoio. <3", + "winterPromoGiftDetails1": "Apenas até o dia 6 de Janeiro, quando você presentear alguém com uma assinatura, você irá ganhar uma assinatura idêntica gratuitamente!", + "winterPromoGiftDetails2": "Por favor, note que se você ou a outra pessoa já tiver uma assinatura ativa, a nova será iniciada somente depois que a assinatura atual tiver sido cancelada ou expirada. Agradecemos seu apoio! <3", "discountBundle": "pacote", "g1g1Announcement": "O evento \"Dê uma Assinatura de presente e ganhe outra grátis\" está acontecendo agora!", "g1g1Details": "Dê de presente uma assinatura para um amigo através do perfil dele e você receberá a mesma assinatura de graça!", diff --git a/website/common/locales/pt_BR/npc.json b/website/common/locales/pt_BR/npc.json index d8f2a406da..0fdf43b134 100644 --- a/website/common/locales/pt_BR/npc.json +++ b/website/common/locales/pt_BR/npc.json @@ -169,5 +169,6 @@ "imReady": "Entre no Habitica", "limitedOffer": "Disponível até <%= date %>", "paymentAutoRenew": "Esta assinatura será renovada automaticamente até ser cancelada. Se você precisar cancelar, poderá fazê-lo através da configurações.", - "paymentCanceledDisputes": "Enviamos uma confirmação de cancelamento para o seu e-mail. Se você não está vendo o e-mail, entre em contato para evitar cobranças futuras." + "paymentCanceledDisputes": "Enviamos uma confirmação de cancelamento para o seu e-mail. Se você não está vendo o e-mail, entre em contato para evitar cobranças futuras.", + "cannotUnpinItem": "Este item não pode ser desfixado." } diff --git a/website/common/locales/pt_BR/questscontent.json b/website/common/locales/pt_BR/questscontent.json index 5c7e2af606..6b1feef5aa 100644 --- a/website/common/locales/pt_BR/questscontent.json +++ b/website/common/locales/pt_BR/questscontent.json @@ -635,7 +635,7 @@ "questVelociraptorBoss": "Veloci-Rapper", "questVelociraptorDropVelociraptorEgg": "Velociraptor (Ovo)", "questVelociraptorUnlockText": "Desbloqueia Ovos de Velociraptor para compra no Mercado", - "mythicalMarvelsText": "Pacote Mítico de Maravilhas da Missão", + "mythicalMarvelsText": "Pacote de Missões Maravilhas Míticas", "mythicalMarvelsNotes": "Contém 'Convencer a Rainha do Unicórnio', 'O Grifo Ardente' e 'Perigo nas Profundezas: Ataque à Serpente Marinha!' Disponível até 28 de fevereiro.", "questBronzeText": "Batalha do Besouro de Bronze", "questBronzeNotes": "Uma pausa renovadora entre tarefas, você e alguns amigos andam pelas trilhas da Floresta de Tarefas. Você encontra um largo buraco em um tronco e um brilho dentro chama sua atenção.

Por quê? É um esconderijo de Poções Mágicas! O líquido bronzeado cintilante balança dentro da frasco, and @Hachiseiko pega um para examinar.\"Parem!\" uma voz estranha atrás de você. É um gigante besouro com uma carapaça de bronze cintilante, levantando seus pés com garras em uma posição de combate. \"Essas são minhas poções, e se vocês querem elas, terão que provar em um duelo de pessoas finas!\"", diff --git a/website/common/locales/sv/gear.json b/website/common/locales/sv/gear.json index 6ed47d6165..c35482315d 100644 --- a/website/common/locales/sv/gear.json +++ b/website/common/locales/sv/gear.json @@ -1805,9 +1805,19 @@ "shieldMystery201902Text": "Kryptisk konfetti", "shieldMystery201902Notes": "Detta glittriga papper bildar magiska hjärtan som långsamt driver och dansar i luften. Ger ingen fördel. Februari 2019 Abonnentföremål", "shieldArmoireMightyPizzaText": "Mäktig pizza", - "shieldArmoireMightyPizzaNotes": "Visst, den är en ganska bra sköld, men vi föreslår hellre att du äter denna läckra, läckra pizza. Ökar Uppmärksamhet med <%= per %>. Förtrollat vapenskåp: Kock-set (Föremål 4 av 4). ", + "shieldArmoireMightyPizzaNotes": "Visst, det är en ganska bra sköld, men vi föreslår att du äter denna läckra, läckra pizza. Ökar Uppmärksamhet med <%= per %>. Förtrollat vapenskåp: Kock-set (Föremål 4 av 4).", "eyewearMystery201902Text": "Hemlighetsfull mask", "eyewearMystery201902Notes": "Denna mystiska mask döljer din identitet men inte ditt vinnande leende. Medför inga ökningar. Februari 2019 Abonnentföremål.", "headArmoireEarflapHatText": "Öronlapp Hatt", - "armorArmoireDuffleCoatText": "Duffelrock" + "armorArmoireDuffleCoatText": "Duffelrock", + "eyewearSpecialKS2019Notes": "Djärv som en grips... hmm, gripar har inte visirer. Det påminner dig att... oh, vem försöker vi lura, det ser bara coolt ut! Ger ingen fördel.", + "eyewearSpecialKS2019Text": "Mystisk Grip-Visir", + "shieldSpecialKS2019Notes": "Gnistrande som skalet av en grips ägg, visar denna magnifika sköld dig hur man står redo att hjälpa andra när dina egna bördor är lätta. Ökar Uppmärksamhet med <%= per %>.", + "shieldSpecialKS2019Text": "Mystisk Grip-Sköld", + "headSpecialKS2019Notes": "Prydd med en grips avbildning och fjäderdräkt, symboliserar denna strålande hjälm sättet dina förmågor och uppförande ger ett ledande exempel för andra. Ökar Intelligens med <%= int %>.", + "headSpecialKS2019Text": "Mystisk Grip-Hjälm", + "armorSpecialKS2019Notes": "Glödande inifrån likt en grips ädla hjärta, uppmuntrar denna glänsande rustning dig till att vara stolt över dina framgångar. Ökar Tålighet med <%= con %>.", + "armorSpecialKS2019Text": "Mystisk Grip-Rustning", + "weaponSpecialKS2019Notes": "Böjd som en grips näbb och klor, påminner denna utsmyckade polarm om att kämpa vidare när uppgiften framför dig är skrämmande. Ökar Styrka med <%= str %>.", + "weaponSpecialKS2019Text": "Mystisk Grip-Galv" } diff --git a/website/common/locales/zh/achievements.json b/website/common/locales/zh/achievements.json index 581d713086..d68ccb930f 100644 --- a/website/common/locales/zh/achievements.json +++ b/website/common/locales/zh/achievements.json @@ -40,5 +40,28 @@ "achievementPearlyPro": "珍珠形专业人士", "achievementPrimedForPaintingModalText": "你集齐了所有白色宠物!", "achievementPrimedForPaintingText": "集齐了所有白色宠物。", - "achievementPrimedForPainting": "上涂底漆" + "achievementPrimedForPainting": "上涂底漆", + "achievementPurchasedEquipmentModalText": "你可以用装备特别制造你的形象和增值你的属性", + "achievementPurchasedEquipmentText": "买了他们头一个装备。", + "achievementPurchasedEquipment": "买了装备", + "achievementFedPetModalText": "有各种各样的食物,但是宠物可能会挑剔", + "achievementFedPetText": "喂了他们头一只宠物。", + "achievementFedPet": "喂一只宠物", + "achievementHatchedPetModalText": "去你的物品栏来合并及孵化药水和一粒蛋", + "achievementHatchedPetText": "孵化了他们头一只宠物。", + "achievementHatchedPet": "孵化一只宠物", + "achievementCompletedTaskModalText": "你可以清点任务已得到奖励", + "achievementCompletedTaskText": "完成了他们头一回任务。", + "achievementCompletedTask": "完成一个任务", + "achievementCreatedTaskModalText": "把这个星期你想完成的任务加在这里", + "achievementCreatedTaskText": "制造了他们头一回任务。", + "achievementCreatedTask": "制造一个任务", + "hideAchievements": "隐藏<%= category %>", + "showAllAchievements": "列出所有<%= category %>", + "onboardingCompleteDesc": "完成了任务单以后,你得到了五个成就一百金币。", + "earnedAchievement": "你得到了一个成就!", + "viewAchievements": "看成就", + "letsGetStarted": "我们开始吧!", + "onboardingProgress": "<%= percentage %>% 完成", + "gettingStartedDesc": "我们一起制作一个任务,做完它,然后看你的奖励。你会得到五个成就一百金币!" } diff --git a/website/common/locales/zh/generic.json b/website/common/locales/zh/generic.json index 91f1bdd68d..bec298b2ba 100644 --- a/website/common/locales/zh/generic.json +++ b/website/common/locales/zh/generic.json @@ -294,5 +294,7 @@ "options": "选项", "demo": "样本", "loadEarlierMessages": "载入早期信息", - "finish": "完成" + "finish": "完成", + "congratulations": "恭喜你!", + "onboardingAchievs": "到职成就" } diff --git a/website/common/locales/zh/limited.json b/website/common/locales/zh/limited.json index e4c38f4317..5e08850404 100644 --- a/website/common/locales/zh/limited.json +++ b/website/common/locales/zh/limited.json @@ -147,7 +147,7 @@ "dateEndJanuary": "1月31日", "dateEndFebruary": "2月28日", "winterPromoGiftHeader": "赠送其他用户订阅服务的同时,您自己也能免费得到订阅者身份!", - "winterPromoGiftDetails1": "本活动持续到1月15日,当你送给你的朋友一份订阅时,你可以免费得到相同的订阅时长!", + "winterPromoGiftDetails1": "本活动持续到1月6日,当你送给你的朋友一份订阅时,你可以免费得到相同的订阅时长!", "winterPromoGiftDetails2": "请注意,如果您或您的礼物收件人已经有一个订阅了,作为礼物的订阅只会在原来的订阅取消后或者过期后开始生效。非常感谢你的支持!(*^_^*)", "discountBundle": "一批", "g1g1Announcement": "赠送他人一份订阅,免费享受一份相同订阅,活动正在进行中!", diff --git a/website/common/locales/zh/npc.json b/website/common/locales/zh/npc.json index f0c7607513..e854f70259 100644 --- a/website/common/locales/zh/npc.json +++ b/website/common/locales/zh/npc.json @@ -169,5 +169,6 @@ "imReady": "进入Habitica", "limitedOffer": "有效期至<%= date %>", "paymentCanceledDisputes": "我们已为您的电子邮件发送了取消确认。如果您没有看到电子邮件,请联系我们,以防止将来发生账单纠纷。", - "paymentAutoRenew": "此订阅在被取消前会自动续订。你可以在设置里取消订阅。" + "paymentAutoRenew": "此订阅在被取消前会自动续订。你可以在设置里取消订阅。", + "cannotUnpinItem": "您不能取消这个物品的固定。" } diff --git a/website/common/locales/zh/questscontent.json b/website/common/locales/zh/questscontent.json index a663da2864..98d47ea113 100644 --- a/website/common/locales/zh/questscontent.json +++ b/website/common/locales/zh/questscontent.json @@ -205,7 +205,7 @@ "questBunnyDropBunnyEgg": "兔(宠物蛋)", "questBunnyUnlockText": "解锁兔子蛋以在市场上购买", "questSlimeText": "果冻摄政王", - "questSlimeNotes": "正当你在努力完成你的任务时,你注意到你移动得越来越慢了。”就像是走在糖浆里一样,“@Leephon抱怨道。”不,像是在果冻里穿行!”@starsystemic说:”那黏糊糊的果冻摄政王已经彻底到达Habitica了。它扰乱了我们的工作,每个人都在越来越慢。“你环顾四周。街道正慢慢地被五颜六色、炫彩夺目的软泥填充着,Habiticans做任何事情都变得艰难起来。当其他人逃离该地区的时候,你抓起了一个拖把,准备战斗!", + "questSlimeNotes": "正当你在努力完成你的任务时,你注意到你移动得越来越慢了。“就像是走在糖浆里一样,”@Leephon抱怨道。“不,像是在果冻里穿行!”@starsystemic说:“那黏糊糊的果冻摄政王已经彻底到达Habitica了。它扰乱了我们的工作,每个人都在越来越慢。”你环顾四周。街道正慢慢地被五颜六色、炫彩夺目的软泥填充着,Habitica居民们做任何事情都变得艰难起来。当其他人逃离该地区的时候,你抓起了一个拖把,准备战斗!", "questSlimeBoss": "果冻摄政王", "questSlimeCompletion": "伴随着最后一戳,你将果冻摄政王引进了你的超大甜甜圈陷阱里,糕点俱乐部的三个思维敏捷的领导者@overomega,@LordDarkly,和@Shaner 冲了进来。每个人都拍着你的背,你觉得有人将什么东西滑进了你的口袋里。这是对你这次甜蜜胜利的奖励:三个棉花糖史莱姆蛋。", "questSlimeDropSlimeEgg": "棉花糖史莱姆(蛋)", From 411219c4b23e110b785050b687a5f7cb15e0c553 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 23 Dec 2019 11:17:35 +0100 Subject: [PATCH 03/43] 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] --- package-lock.json | 27 +++++++++++++++++++-------- package.json | 2 +- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6e68574e05..310ce5cc2d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,14 +13,14 @@ } }, "@babel/core": { - "version": "7.7.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.7.5.tgz", - "integrity": "sha512-M42+ScN4+1S9iB6f+TL7QBpoQETxbclx+KNoKJABghnKYE+fMzSGqst0BZJc8CpI625bwPwYgUyRvxZ+0mZzpw==", + "version": "7.7.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.7.7.tgz", + "integrity": "sha512-jlSjuj/7z138NLZALxVgrx13AOtqip42ATZP7+kYl53GvDV6+4dCek1mVUo8z8c8Xnw/mx2q3d9HWh3griuesQ==", "requires": { "@babel/code-frame": "^7.5.5", - "@babel/generator": "^7.7.4", + "@babel/generator": "^7.7.7", "@babel/helpers": "^7.7.4", - "@babel/parser": "^7.7.5", + "@babel/parser": "^7.7.7", "@babel/template": "^7.7.4", "@babel/traverse": "^7.7.4", "@babel/types": "^7.7.4", @@ -33,10 +33,21 @@ "source-map": "^0.5.0" }, "dependencies": { + "@babel/generator": { + "version": "7.7.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.7.tgz", + "integrity": "sha512-/AOIBpHh/JU1l0ZFS4kiRCBnLi6OTHzh0RPk3h9isBxkkqELtQNFi1Vr/tiG9p1yfoUdKVwISuXWQR+hwwM4VQ==", + "requires": { + "@babel/types": "^7.7.4", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, "@babel/parser": { - "version": "7.7.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.5.tgz", - "integrity": "sha512-KNlOe9+/nk4i29g0VXgl8PEXIRms5xKLJeuZ6UptN0fHv+jDiriG+y94X6qAgWTR0h3KaoM1wK5G5h7MHFRSig==" + "version": "7.7.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.7.tgz", + "integrity": "sha512-WtTZMZAZLbeymhkd/sEaPD8IQyGAhmuTuvTzLiCFM7iXiVdY0gc0IaI+cW0fh1BnSMbJSzXX6/fHllgHKwHhXw==" }, "convert-source-map": { "version": "1.7.0", diff --git a/package.json b/package.json index d00ac0cdec..b23a4d7ad5 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "version": "4.127.1", "main": "./website/server/index.js", "dependencies": { - "@babel/core": "^7.7.5", + "@babel/core": "^7.7.7", "@babel/preset-env": "^7.7.6", "@babel/register": "^7.7.4", "@google-cloud/trace-agent": "^4.2.4", From 29ac38a60e5bade230f2eb5191338c7367b30956 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 23 Dec 2019 11:17:53 +0100 Subject: [PATCH 04/43] 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] --- package-lock.json | 6 +++--- package.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index 310ce5cc2d..dbf949c661 100644 --- a/package-lock.json +++ b/package-lock.json @@ -714,9 +714,9 @@ } }, "@babel/register": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.7.4.tgz", - "integrity": "sha512-/fmONZqL6ZMl9KJUYajetCrID6m0xmL4odX7v+Xvoxcv0DdbP/oO0TWIeLUCHqczQ6L6njDMqmqHFy2cp3FFsA==", + "version": "7.7.7", + "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.7.7.tgz", + "integrity": "sha512-S2mv9a5dc2pcpg/ConlKZx/6wXaEwHeqfo7x/QbXsdCAZm+WJC1ekVvL1TVxNsedTs5y/gG63MhJTEsmwmjtiA==", "requires": { "find-cache-dir": "^2.0.0", "lodash": "^4.17.13", diff --git a/package.json b/package.json index b23a4d7ad5..bda4156811 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "dependencies": { "@babel/core": "^7.7.7", "@babel/preset-env": "^7.7.6", - "@babel/register": "^7.7.4", + "@babel/register": "^7.7.7", "@google-cloud/trace-agent": "^4.2.4", "@slack/client": "^3.8.1", "accepts": "^1.3.5", From 14821f39b0bc2321af5fc01d5ffd80c25dcf78c6 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 23 Dec 2019 11:18:07 +0100 Subject: [PATCH 05/43] 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] --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index dbf949c661..cee1c4b234 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4282,9 +4282,9 @@ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, "eslint": { - "version": "6.7.2", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.7.2.tgz", - "integrity": "sha512-qMlSWJaCSxDFr8fBPvJM9kJwbazrhNcBU3+DszDW1OlEwKBBRWsJc7NJFelvwQpanHCR14cOLD41x8Eqvo3Nng==", + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", + "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", "requires": { "@babel/code-frame": "^7.0.0", "ajv": "^6.10.0", @@ -7311,9 +7311,9 @@ "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" }, "inquirer": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.0.tgz", - "integrity": "sha512-rSdC7zelHdRQFkWnhsMu2+2SO41mpv2oF2zy4tMhmiLWkcKbOAs87fWAJhVXttKVwhdZvymvnuM95EyEXg2/tQ==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.1.tgz", + "integrity": "sha512-V1FFQ3TIO15det8PijPLFR9M9baSlnRs9nL7zWu1MNVA2T9YVl9ZbrHJhYs7e9X8jeMZ3lr2JH/rdHFgNCBdYw==", "requires": { "ansi-escapes": "^4.2.1", "chalk": "^2.4.2", @@ -7324,7 +7324,7 @@ "lodash": "^4.17.15", "mute-stream": "0.0.8", "run-async": "^2.2.0", - "rxjs": "^6.4.0", + "rxjs": "^6.5.3", "string-width": "^4.1.0", "strip-ansi": "^5.1.0", "through": "^2.3.6" diff --git a/package.json b/package.json index bda4156811..1b45bf0e96 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,7 @@ "csv-stringify": "^5.3.4", "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", From 4ef3ccd23b82ae3e3e41d3ed4e1bc3eb2a36dcec Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 23 Dec 2019 11:18:17 +0100 Subject: [PATCH 06/43] 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] --- package-lock.json | 6 +++--- package.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index cee1c4b234..975c68465b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8970,9 +8970,9 @@ } }, "mongoose": { - "version": "5.8.1", - "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.8.1.tgz", - "integrity": "sha512-8Cffl52cMK2iBlpLipoRKW/RdrhkxvVzXsy+xVsfbKHQBCWkFiS0T0jU4smYzomTMP4gW0sReJoRA7Gu/7VVgQ==", + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.8.2.tgz", + "integrity": "sha512-g9huwQpz3K+DadNIsvaTYe/8sNKS/Sy33k/4wbK6lk+h9qfuBsqYKxK2l6YffRiDV6RO6MNJEWVMdlQx3/P7lw==", "requires": { "bson": "~1.1.1", "kareem": "2.3.1", diff --git a/package.json b/package.json index 1b45bf0e96..03ab54bb61 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,7 @@ "method-override": "^3.0.0", "moment": "^2.24.0", "moment-recur": "^1.0.7", - "mongoose": "^5.8.1", + "mongoose": "^5.8.2", "morgan": "^1.7.0", "nconf": "^0.10.0", "node-gcm": "^1.0.2", From 8c661e55c70db53a75ce7432dfd976a18425e8c2 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 23 Dec 2019 11:18:41 +0100 Subject: [PATCH 07/43] 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] --- package-lock.json | 6 +++--- package.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index 975c68465b..51060c1d04 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1723,9 +1723,9 @@ "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" }, "aws-sdk": { - "version": "2.590.0", - "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.590.0.tgz", - "integrity": "sha512-cdH3B/IuEuds84zRvi52WEW0UXOjsyl9hEkdbS2Uo8P7pWepaKTOZ3BKIUsy/lXen0nHcRWDCHeUkBwNW1Q2bg==", + "version": "2.595.0", + "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.595.0.tgz", + "integrity": "sha512-bE/XzwlvEv3YPGfU7EfvAOi1IaEzmM+9VWP6xD9xN1lLhdBgCIiQIvSnr52LDR4J7ohqVP+oYpuBZcXrqZaP2Q==", "requires": { "buffer": "4.9.1", "events": "1.1.1", diff --git a/package.json b/package.json index 03ab54bb61..6e41cce454 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,7 @@ "amplitude": "^3.5.0", "apidoc": "^0.17.5", "apn": "^2.2.0", - "aws-sdk": "^2.590.0", + "aws-sdk": "^2.595.0", "bcrypt": "^3.0.7", "body-parser": "^1.18.3", "compression": "^1.7.4", From c13f45dcebc3afa7ccbcec2d6f6f39d172b8f316 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 23 Dec 2019 11:18:49 +0100 Subject: [PATCH 08/43] 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] --- website/client/package-lock.json | 74 ++++++++++++++++++++------------ website/client/package.json | 2 +- 2 files changed, 48 insertions(+), 28 deletions(-) diff --git a/website/client/package-lock.json b/website/client/package-lock.json index 568cbb7f28..0d993f76b8 100644 --- a/website/client/package-lock.json +++ b/website/client/package-lock.json @@ -4912,9 +4912,9 @@ } }, "buffer": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", - "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", "requires": { "base64-js": "^1.0.2", "ieee754": "^1.1.4", @@ -5748,12 +5748,9 @@ "integrity": "sha512-2bcAqHastlPSCvZ+ur8bgHInGAWvUnysWz3h3xRX+/XZoCY7avolJJnVXOPGoVoyCcg1b231XixonoArmgxaoA==" }, "console-browserify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", - "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", - "requires": { - "date-now": "^0.1.4" - } + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==" }, "console-control-strings": { "version": "1.1.0", @@ -6294,11 +6291,6 @@ "whatwg-url": "^7.0.0" } }, - "date-now": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", - "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=" - }, "de-indent": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", @@ -6575,9 +6567,9 @@ "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" }, "des.js": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", - "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", "requires": { "inherits": "^2.0.1", "minimalistic-assert": "^1.0.0" @@ -6847,9 +6839,9 @@ } }, "elliptic": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.1.tgz", - "integrity": "sha512-xvJINNLbTeWQjrl6X+7eQCrIy/YPv5XCpKW6kB5mKvtnGILoLDcySuwomfdzt0BMdLNVnuRNTuzKNHj0bva1Cg==", + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.2.tgz", + "integrity": "sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw==", "requires": { "bn.js": "^4.4.0", "brorand": "^1.0.1", @@ -15394,9 +15386,9 @@ } }, "vm-browserify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.0.tgz", - "integrity": "sha512-iq+S7vZJE60yejDYM0ek6zg308+UZsdtPExWP9VZoCFCz1zkJoXFnAX7aZfd/ZwrkidzdUZL0C/ryW+JwAiIGw==" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==" }, "vue": { "version": "2.6.11", @@ -15567,9 +15559,9 @@ "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" }, "webpack": { - "version": "4.41.2", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.41.2.tgz", - "integrity": "sha512-Zhw69edTGfbz9/8JJoyRQ/pq8FYUoY0diOXqW0T6yhgdhCv6wr0hra5DwwWexNRns2Z2+gsnrNcbe9hbGBgk/A==", + "version": "4.41.4", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.41.4.tgz", + "integrity": "sha512-Lc+2uB6NjpCWsHI3trkoISOI64h9QYIXenbEWj3bn3oyjfB1lEBXjWAfAyY2sM0rZn41oD5V91OLwKRwS6Wp8Q==", "requires": { "@webassemblyjs/ast": "1.8.5", "@webassemblyjs/helper-module-context": "1.8.5", @@ -15591,9 +15583,37 @@ "node-libs-browser": "^2.2.1", "schema-utils": "^1.0.0", "tapable": "^1.1.3", - "terser-webpack-plugin": "^1.4.1", + "terser-webpack-plugin": "^1.4.3", "watchpack": "^1.6.0", "webpack-sources": "^1.4.1" + }, + "dependencies": { + "serialize-javascript": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz", + "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "terser-webpack-plugin": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz", + "integrity": "sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA==", + "requires": { + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^2.1.2", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" + } + } } }, "webpack-bundle-analyzer": { diff --git a/website/client/package.json b/website/client/package.json index 8c1aa554ab..37086884bc 100644 --- a/website/client/package.json +++ b/website/client/package.json @@ -60,6 +60,6 @@ "vue-template-compiler": "^2.6.11", "vuedraggable": "^2.23.1", "vuejs-datepicker": "git://github.com/habitrpg/vuejs-datepicker.git#5d237615463a84a23dd6f3f77c6ab577d68593ec", - "webpack": "^4.41.2" + "webpack": "^4.41.4" } } From 9309821c778ec6f3db3b9e8a2e06b187c2f348c5 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 23 Dec 2019 11:18:58 +0100 Subject: [PATCH 09/43] 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] --- website/client/package-lock.json | 6 +++--- website/client/package.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/website/client/package-lock.json b/website/client/package-lock.json index 0d993f76b8..ee8cc5ce17 100644 --- a/website/client/package-lock.json +++ b/website/client/package-lock.json @@ -5900,9 +5900,9 @@ } }, "core-js": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.5.0.tgz", - "integrity": "sha512-Ifh3kj78gzQ7NAoJXeTu+XwzDld0QRIwjBLRqAMhuLhP3d2Av5wmgE9ycfnvK6NAEjTkQ1sDPeoEZAWO3Hx1Uw==" + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.0.tgz", + "integrity": "sha512-AHPTNKzyB+YwgDWoSOCaid9PUSEF6781vsfiK8qUz62zRR448/XgK2NtCbpiUGizbep8Lrpt0Du19PpGGZvw3Q==" }, "core-js-compat": { "version": "3.4.5", diff --git a/website/client/package.json b/website/client/package.json index 37086884bc..924f4941a1 100644 --- a/website/client/package.json +++ b/website/client/package.json @@ -31,7 +31,7 @@ "bootstrap": "^4.4.1", "bootstrap-vue": "^2.1.0", "chai": "^4.1.2", - "core-js": "^3.5.0", + "core-js": "^3.6.0", "eslint": "^6.7.2", "eslint-config-habitrpg": "^6.2.0", "eslint-plugin-mocha": "^5.3.0", From 7cd18717542bc10cf9e3ffab2bb337e6d024b5de Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 23 Dec 2019 11:19:09 +0100 Subject: [PATCH 10/43] 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] --- website/client/package-lock.json | 6 +++--- website/client/package.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/website/client/package-lock.json b/website/client/package-lock.json index ee8cc5ce17..f27264c3f7 100644 --- a/website/client/package-lock.json +++ b/website/client/package-lock.json @@ -13577,9 +13577,9 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "sass": { - "version": "1.23.7", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.23.7.tgz", - "integrity": "sha512-cYgc0fanwIpi0rXisGxl+/wadVQ/HX3RhpdRcjLdj2o2ye/sxUTpAxIhbmJy3PLQgRFbf6Pn8Jsrta2vdXcoOQ==", + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.24.0.tgz", + "integrity": "sha512-1TsPyMhLTx+9DLlmwg02iBW2p4poGA7LlkWJLpUY/XticFKNhPcx+l4FsIJLKl6oSUfXmAKpVljHEez1hwjqiw==", "requires": { "chokidar": ">=2.0.0 <4.0.0" } diff --git a/website/client/package.json b/website/client/package.json index 924f4941a1..06b8209edd 100644 --- a/website/client/package.json +++ b/website/client/package.json @@ -44,7 +44,7 @@ "lodash": "^4.17.15", "moment": "^2.24.0", "nconf": "^0.10.0", - "sass": "^1.23.7", + "sass": "^1.24.0", "sass-loader": "^8.0.0", "smartbanner.js": "^1.15.0", "svg-inline-loader": "^0.8.0", From 3490930594396b7db2c26183f3b19d34c3f35f44 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 23 Dec 2019 11:19:49 +0100 Subject: [PATCH 11/43] 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] --- package-lock.json | 9 +++++---- package.json | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 51060c1d04..8ec40c405e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9736,6 +9736,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", + "optional": true, "requires": { "define-properties": "^1.1.2", "es-abstract": "^1.5.1" @@ -13025,6 +13026,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", + "optional": true, "requires": { "define-properties": "^1.1.2", "object.getownpropertydescriptors": "^2.0.3" @@ -13500,12 +13502,11 @@ } }, "xml2js": { - "version": "0.4.22", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.22.tgz", - "integrity": "sha512-MWTbxAQqclRSTnehWWe5nMKzI3VmJ8ltiJEco8akcC6j3miOhjjfzKum5sId+CWhfxdOs/1xauYr8/ZDBtQiRw==", + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", + "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", "requires": { "sax": ">=0.6.0", - "util.promisify": "~1.0.0", "xmlbuilder": "~11.0.0" }, "dependencies": { diff --git a/package.json b/package.json index 6e41cce454..ca37bdc4a9 100644 --- a/package.json +++ b/package.json @@ -71,7 +71,7 @@ "vinyl-buffer": "^1.0.1", "winston": "^2.4.3", "winston-loggly-bulk": "^2.0.2", - "xml2js": "^0.4.4" + "xml2js": "^0.4.23" }, "private": true, "engines": { From 5bc052c12cbaf0318e96e8e18366cf79a00e9667 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 23 Dec 2019 11:20:01 +0100 Subject: [PATCH 12/43] 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] --- package-lock.json | 6 +++--- package.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8ec40c405e..0cc5892c95 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12038,9 +12038,9 @@ "integrity": "sha1-6NK6H6nJBXAwPAMLaQD31fiavls=" }, "superagent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/superagent/-/superagent-5.1.2.tgz", - "integrity": "sha512-VwPCbi9H02qDtTbdY+e3+cK5XR0YHsJy9hmeCOXLQ8ezjq8+S1Bs4MdNRmpmf2QjDBetD7drG7/nEta7E3E6Sg==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-5.1.3.tgz", + "integrity": "sha512-2bno1Nb4uvZPECTJ7NDYlae6Q8LLQoZZZ9Vumd346jU1UGVkNC/lQI42jHwtrqVoepyt0QxNKFty01IRKgD4CA==", "requires": { "component-emitter": "^1.3.0", "cookiejar": "^2.1.2", diff --git a/package.json b/package.json index ca37bdc4a9..8de553ff77 100644 --- a/package.json +++ b/package.json @@ -63,7 +63,7 @@ "rimraf": "^3.0.0", "short-uuid": "^3.0.0", "stripe": "^7.14.0", - "superagent": "^5.1.2", + "superagent": "^5.1.3", "universal-analytics": "^0.4.17", "useragent": "^2.1.9", "uuid": "^3.3.3", From 383f353534151c828ab0f23131d8f409d480f423 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 23 Dec 2019 11:20:23 +0100 Subject: [PATCH 13/43] 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] --- package-lock.json | 72 +++++++++++++++++++++++------------------------ package.json | 2 +- 2 files changed, 37 insertions(+), 37 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0cc5892c95..c539056834 100644 --- a/package-lock.json +++ b/package-lock.json @@ -306,9 +306,9 @@ } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.7.4.tgz", - "integrity": "sha512-rnpnZR3/iWKmiQyJ3LKJpSwLDcX/nSXhdLk4Aq/tXOApIvyu7qoabrige0ylsAJffaUC51WiBu209Q0U+86OWQ==", + "version": "7.7.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.7.7.tgz", + "integrity": "sha512-3qp9I8lelgzNedI3hrhkvhaEYree6+WHnyA/q4Dza9z7iEIs1eyhWyJnetk3jJ69RT0AT4G0UhEGwyGFJ7GUuQ==", "requires": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/plugin-syntax-object-rest-spread": "^7.7.4" @@ -324,9 +324,9 @@ } }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.7.4.tgz", - "integrity": "sha512-cHgqHgYvffluZk85dJ02vloErm3Y6xtH+2noOBOJ2kXOJH3aVCDnj5eR/lVNlTnYu4hndAPJD3rTFjW3qee0PA==", + "version": "7.7.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.7.7.tgz", + "integrity": "sha512-80PbkKyORBUVm1fbTLrHpYdJxMThzM1UqFGh0ALEhO9TYbG86Ah9zQYAB/84axz2vcxefDLdZwWwZNlYARlu9w==", "requires": { "@babel/helper-create-regexp-features-plugin": "^7.7.4", "@babel/helper-plugin-utils": "^7.0.0" @@ -447,9 +447,9 @@ } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.7.4.tgz", - "integrity": "sha512-mk0cH1zyMa/XHeb6LOTXTbG7uIJ8Rrjlzu91pUx/KS3JpcgaTDwMS8kM+ar8SLOvlL2Lofi4CGBAjCo3a2x+lw==", + "version": "7.7.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.7.7.tgz", + "integrity": "sha512-b4in+YlTeE/QmTgrllnb3bHA0HntYvjz8O3Mcbx75UBPJA2xhb5A8nle498VhxSXJHQefjtQxpnLPehDJ4TRlg==", "requires": { "@babel/helper-create-regexp-features-plugin": "^7.7.4", "@babel/helper-plugin-utils": "^7.0.0" @@ -571,9 +571,9 @@ } }, "@babel/plugin-transform-parameters": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.7.4.tgz", - "integrity": "sha512-VJwhVePWPa0DqE9vcfptaJSzNDKrWU/4FbYCjZERtmqEs05g3UMXnYMZoXja7JAJ7Y7sPZipwm/pGApZt7wHlw==", + "version": "7.7.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.7.7.tgz", + "integrity": "sha512-OhGSrf9ZBrr1fw84oFXj5hgi8Nmg+E2w5L7NhnG0lPvpDtqd7dbyilM2/vR8CKbJ907RyxPh2kj6sBCSSfI9Ew==", "requires": { "@babel/helper-call-delegate": "^7.7.4", "@babel/helper-get-function-arity": "^7.7.4", @@ -656,18 +656,18 @@ } }, "@babel/preset-env": { - "version": "7.7.6", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.7.6.tgz", - "integrity": "sha512-k5hO17iF/Q7tR9Jv8PdNBZWYW6RofxhnxKjBMc0nG4JTaWvOTiPoO/RLFwAKcA4FpmuBFm6jkoqaRJLGi0zdaQ==", + "version": "7.7.7", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.7.7.tgz", + "integrity": "sha512-pCu0hrSSDVI7kCVUOdcMNQEbOPJ52E+LrQ14sN8uL2ALfSqePZQlKrOy+tM4uhEdYlCHi4imr8Zz2cZe9oSdIg==", "requires": { "@babel/helper-module-imports": "^7.7.4", "@babel/helper-plugin-utils": "^7.0.0", "@babel/plugin-proposal-async-generator-functions": "^7.7.4", "@babel/plugin-proposal-dynamic-import": "^7.7.4", "@babel/plugin-proposal-json-strings": "^7.7.4", - "@babel/plugin-proposal-object-rest-spread": "^7.7.4", + "@babel/plugin-proposal-object-rest-spread": "^7.7.7", "@babel/plugin-proposal-optional-catch-binding": "^7.7.4", - "@babel/plugin-proposal-unicode-property-regex": "^7.7.4", + "@babel/plugin-proposal-unicode-property-regex": "^7.7.7", "@babel/plugin-syntax-async-generators": "^7.7.4", "@babel/plugin-syntax-dynamic-import": "^7.7.4", "@babel/plugin-syntax-json-strings": "^7.7.4", @@ -681,7 +681,7 @@ "@babel/plugin-transform-classes": "^7.7.4", "@babel/plugin-transform-computed-properties": "^7.7.4", "@babel/plugin-transform-destructuring": "^7.7.4", - "@babel/plugin-transform-dotall-regex": "^7.7.4", + "@babel/plugin-transform-dotall-regex": "^7.7.7", "@babel/plugin-transform-duplicate-keys": "^7.7.4", "@babel/plugin-transform-exponentiation-operator": "^7.7.4", "@babel/plugin-transform-for-of": "^7.7.4", @@ -695,7 +695,7 @@ "@babel/plugin-transform-named-capturing-groups-regex": "^7.7.4", "@babel/plugin-transform-new-target": "^7.7.4", "@babel/plugin-transform-object-super": "^7.7.4", - "@babel/plugin-transform-parameters": "^7.7.4", + "@babel/plugin-transform-parameters": "^7.7.7", "@babel/plugin-transform-property-literals": "^7.7.4", "@babel/plugin-transform-regenerator": "^7.7.5", "@babel/plugin-transform-reserved-words": "^7.7.4", @@ -707,7 +707,7 @@ "@babel/plugin-transform-unicode-regex": "^7.7.4", "@babel/types": "^7.7.4", "browserslist": "^4.6.0", - "core-js-compat": "^3.4.7", + "core-js-compat": "^3.6.0", "invariant": "^2.2.2", "js-levenshtein": "^1.1.3", "semver": "^5.5.0" @@ -2676,9 +2676,9 @@ "integrity": "sha1-FkpUg+Yw+kMh5a8HAg5TGDGyYJs=" }, "caniuse-lite": { - "version": "1.0.30001015", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001015.tgz", - "integrity": "sha512-/xL2AbW/XWHNu1gnIrO8UitBGoFthcsDgU9VLK1/dpsoxbaD5LscHozKze05R6WLsBvLhqv78dAPozMFQBYLbQ==" + "version": "1.0.30001016", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001016.tgz", + "integrity": "sha512-yYQ2QfotceRiH4U+h1Us86WJXtVHDmy3nEKIdYPsZCYnOV5/tMgGbmoIlrMzmh2VXlproqYtVaKeGDBkMZifFA==" }, "capture-stack-trace": { "version": "1.0.1", @@ -3354,18 +3354,18 @@ "dev": true }, "core-js-compat": { - "version": "3.4.8", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.4.8.tgz", - "integrity": "sha512-l3WTmnXHV2Sfu5VuD7EHE2w7y+K68+kULKt5RJg8ZJk3YhHF1qLD4O8v8AmNq+8vbOwnPFFDvds25/AoEvMqlQ==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.0.tgz", + "integrity": "sha512-Z3eCNjGgoYluH89Jt4wVkfYsc/VdLrA2/woX5lm0isO/pCT+P+Y+o65bOuEnjDJLthdwTBxbCVzptTXtc18fJg==", "requires": { "browserslist": "^4.8.2", - "semver": "^6.3.0" + "semver": "7.0.0" }, "dependencies": { "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==" } } }, @@ -9487,9 +9487,9 @@ } }, "node-releases": { - "version": "1.1.42", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.42.tgz", - "integrity": "sha512-OQ/ESmUqGawI2PRX+XIRao44qWYBBfN54ImQYdWVTQqUckuejOg76ysSqDBK8NG3zwySRVnX36JwDQ6x+9GxzA==", + "version": "1.1.43", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.43.tgz", + "integrity": "sha512-Rmfnj52WNhvr83MvuAWHEqXVoZXCcDQssSOffU4n4XOL9sPrP61mSZ88g25NqmABDvH7PiAlFCzoSCSdzA293w==", "requires": { "semver": "^6.3.0" }, @@ -10862,9 +10862,9 @@ "integrity": "sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg==" }, "regjsparser": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.0.tgz", - "integrity": "sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ==", + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.2.tgz", + "integrity": "sha512-E9ghzUtoLwDekPT0DYCp+c4h+bvuUpe6rRHCTYn6eGoqj1LgKXxT6I0Il4WbjhQkOghzi/V+y03bPKvbllL93Q==", "requires": { "jsesc": "~0.5.0" }, diff --git a/package.json b/package.json index 8de553ff77..0bc070fceb 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "main": "./website/server/index.js", "dependencies": { "@babel/core": "^7.7.7", - "@babel/preset-env": "^7.7.6", + "@babel/preset-env": "^7.7.7", "@babel/register": "^7.7.7", "@google-cloud/trace-agent": "^4.2.4", "@slack/client": "^3.8.1", From 92009c1100eb06e165f691df9ae92f1b816cd268 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 23 Dec 2019 11:20:36 +0100 Subject: [PATCH 14/43] 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] --- package-lock.json | 6 +++--- package.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index c539056834..d2b7a1c903 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3467,9 +3467,9 @@ } }, "csv-stringify": { - "version": "5.3.4", - "resolved": "https://registry.npmjs.org/csv-stringify/-/csv-stringify-5.3.4.tgz", - "integrity": "sha512-w3sjZh/b5xvN1NeWPbMBnvW+Q4D+cCoAk/2J0C/DqJKV3dHqseQGzP/BsdpqbIBl5UTFQxHgHkSUu5aiMFT62g==" + "version": "5.3.5", + "resolved": "https://registry.npmjs.org/csv-stringify/-/csv-stringify-5.3.5.tgz", + "integrity": "sha512-bFbaJqz7LcwnTzdryyJuhR6Pys2deU8+z7O8N0JBnNGm7vnJVr3K0n68bhb+rlMpwCmDbUtinr8yq5I2RlPMqw==" }, "currently-unhandled": { "version": "0.4.1", diff --git a/package.json b/package.json index 0bc070fceb..79fbc0f382 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ "compression": "^1.7.4", "cookie-session": "^1.3.3", "coupon-code": "^0.4.5", - "csv-stringify": "^5.3.4", + "csv-stringify": "^5.3.5", "cwait": "^1.1.1", "domain-middleware": "~0.1.0", "eslint": "^6.8.0", From 6b072f0f8f013ee7db8434241f9abad3f4a8fec2 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 23 Dec 2019 11:22:48 +0100 Subject: [PATCH 15/43] 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] --- website/client/package-lock.json | 27 +++++++-------------------- website/client/package.json | 2 +- 2 files changed, 8 insertions(+), 21 deletions(-) diff --git a/website/client/package-lock.json b/website/client/package-lock.json index f27264c3f7..f25fa338dc 100644 --- a/website/client/package-lock.json +++ b/website/client/package-lock.json @@ -7011,9 +7011,9 @@ } }, "eslint": { - "version": "6.7.2", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.7.2.tgz", - "integrity": "sha512-qMlSWJaCSxDFr8fBPvJM9kJwbazrhNcBU3+DszDW1OlEwKBBRWsJc7NJFelvwQpanHCR14cOLD41x8Eqvo3Nng==", + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", + "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", "requires": { "@babel/code-frame": "^7.0.0", "ajv": "^6.10.0", @@ -7088,19 +7088,6 @@ "resolve-from": "^4.0.0" } }, - "optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - } - }, "resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", @@ -9354,9 +9341,9 @@ "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" }, "inquirer": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.0.tgz", - "integrity": "sha512-rSdC7zelHdRQFkWnhsMu2+2SO41mpv2oF2zy4tMhmiLWkcKbOAs87fWAJhVXttKVwhdZvymvnuM95EyEXg2/tQ==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.1.tgz", + "integrity": "sha512-V1FFQ3TIO15det8PijPLFR9M9baSlnRs9nL7zWu1MNVA2T9YVl9ZbrHJhYs7e9X8jeMZ3lr2JH/rdHFgNCBdYw==", "requires": { "ansi-escapes": "^4.2.1", "chalk": "^2.4.2", @@ -9367,7 +9354,7 @@ "lodash": "^4.17.15", "mute-stream": "0.0.8", "run-async": "^2.2.0", - "rxjs": "^6.4.0", + "rxjs": "^6.5.3", "string-width": "^4.1.0", "strip-ansi": "^5.1.0", "through": "^2.3.6" diff --git a/website/client/package.json b/website/client/package.json index 06b8209edd..5672827655 100644 --- a/website/client/package.json +++ b/website/client/package.json @@ -32,7 +32,7 @@ "bootstrap-vue": "^2.1.0", "chai": "^4.1.2", "core-js": "^3.6.0", - "eslint": "^6.7.2", + "eslint": "^6.8.0", "eslint-config-habitrpg": "^6.2.0", "eslint-plugin-mocha": "^5.3.0", "eslint-plugin-vue": "^6.0.1", From b9af3fb40e4e22993d5ecd04ec3405e6ea212a1c Mon Sep 17 00:00:00 2001 From: Glendon Solsberry Date: Mon, 23 Dec 2019 11:45:42 -0500 Subject: [PATCH 16/43] Updates notifications screen to a more consistent UI (#11635) --- .../src/components/settings/notifications.vue | 69 +++++++++---------- website/common/locales/en/settings.json | 4 +- 2 files changed, 36 insertions(+), 37 deletions(-) diff --git a/website/client/src/components/settings/notifications.vue b/website/client/src/components/settings/notifications.vue index 29017b4899..24a4b46d17 100644 --- a/website/client/src/components/settings/notifications.vue +++ b/website/client/src/components/settings/notifications.vue @@ -28,39 +28,38 @@ {{ $t('unsubscribeAllEmailsText') }}
-
- - - - {{ $t('email') }} - - - {{ $t('push') }} - - - - - {{ $t(notification) }} - - - - - - -
- - + + + + + + + + + + + +
+ {{ $t('email') }} + + {{ $t('push') }} +
+ {{ $t(notification) }} + + + + + +   +
@@ -74,6 +73,8 @@ export default { data () { return { notificationsIds: Object.freeze([ + 'majorUpdates', + 'onboarding', 'newPM', 'wonChallenge', 'giftedGems', @@ -85,8 +86,6 @@ export default { 'invitedQuest', 'importantAnnouncements', 'weeklyRecaps', - 'onboarding', - 'majorUpdates', 'subscriptionReminders', ]), // list of email-only notifications diff --git a/website/common/locales/en/settings.json b/website/common/locales/en/settings.json index e018b2a421..c60c370c98 100644 --- a/website/common/locales/en/settings.json +++ b/website/common/locales/en/settings.json @@ -120,7 +120,7 @@ "giftedSubscriptionFull": "Hello <%= username %>, <%= sender %> has sent you <%= monthCount %> months of subscription!", "giftedSubscriptionWinterPromo": "Hello <%= username %>, you received <%= monthCount %> months of subscription as part of our holiday gift-giving promotion!", "invitedParty": "You were invited to a Party", - "invitedGuild": "You were invited to a Guild", + "invitedGuild": "You were invited to a Guild", "importantAnnouncements": "Reminders to check in to complete tasks and receive prizes", "weeklyRecaps": "Summaries of your account activity in the past week (Note: this is currently disabled due to performance issues, but we hope to have this back up and sending e-mails again soon!)", "onboarding": "Guidance with setting up your Habitica account", @@ -211,4 +211,4 @@ "suggestMyUsername": "Suggest my username", "everywhere": "Everywhere", "onlyPrivateSpaces": "Only in private spaces" -} \ No newline at end of file +} From 7d2c5ed33929719f22491998fe990201dd7ac54b Mon Sep 17 00:00:00 2001 From: Timothy <32404189+MeisterRed@users.noreply.github.com> Date: Mon, 23 Dec 2019 11:48:55 -0500 Subject: [PATCH 17/43] 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 --- website/client/src/components/settings/site.vue | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/website/client/src/components/settings/site.vue b/website/client/src/components/settings/site.vue index b63f964f31..ac3299c44c 100644 --- a/website/client/src/components/settings/site.vue +++ b/website/client/src/components/settings/site.vue @@ -812,7 +812,8 @@ export default { this.localAuth.username = this.user.auth.local.username; this.user.flags.verifiedUsername = true; } else if (attribute === 'email') { - this.user.auth.local.email = updates[attribute]; + this.user.auth.local.email = updates.newEmail; + window.alert(this.$t('emailSuccess')); } }, async changeDisplayName (newName) { From 04a9c9739369e98a4dddf9cc134d0e3e5b1f9df8 Mon Sep 17 00:00:00 2001 From: Yo <58630804+flowed@users.noreply.github.com> Date: Mon, 23 Dec 2019 22:22:55 +0530 Subject: [PATCH 18/43] Fix Typos (#11644) * Fix Typos * Fix More Typos --- migrations/s3-upload.js | 2 +- test/api/unit/libs/analyticsService.test.js | 4 ++-- test/api/unit/libs/payments/payments.test.js | 2 +- test/api/v3/integration/challenges/POST-challenges.test.js | 2 +- test/api/v3/integration/groups/GET-groups_id.test.js | 4 ++-- test/api/v3/integration/groups/POST-groups_groupId_leave.js | 4 ++-- .../payments/amazon/POST-payments_amazon_checkout.test.js | 2 +- test/api/v3/integration/tasks/DELETE-tasks_id.test.js | 2 +- test/api/v3/integration/tasks/GET-tasks_id.test.js | 2 +- .../DELETE-tasks_id_challenge_challengeId.test.js | 2 +- .../v3/integration/user/auth/PUT-user_update_email.test.js | 2 +- test/common/libs/getDebuffPotionItems.test.js | 2 +- test/common/ops/unlock.js | 2 +- website/client/src/components/achievements/death.vue | 2 +- website/client/src/components/achievements/streak.vue | 4 ++-- website/client/src/components/auth/registerLoginReset.vue | 2 +- website/client/src/components/chat/chatMessages.vue | 2 +- website/client/src/components/creatorIntro.vue | 4 ++-- website/client/src/components/groups/membersModal.vue | 2 +- website/client/src/components/inventory/equipment/index.vue | 4 ++-- website/client/src/libs/logging.js | 2 +- website/client/src/mixins/spells.js | 2 +- website/client/tests/unit/components/avatar.spec.js | 2 +- website/common/locales/en_GB/gear.json | 2 +- website/common/script/cron.js | 2 +- website/common/script/ops/pinnedGearUtils.js | 2 +- website/server/controllers/api-v3/content.js | 6 +++--- website/server/controllers/api-v3/groups.js | 2 +- website/server/controllers/api-v3/hall.js | 2 +- website/server/controllers/api-v3/members.js | 2 +- website/server/controllers/api-v3/user.js | 2 +- website/server/controllers/top-level/dataexport.js | 2 +- website/server/libs/auth/index.js | 2 +- website/server/libs/i18n.js | 2 +- website/server/libs/taskManager.js | 2 +- website/server/middlewares/errorHandler.js | 2 +- website/server/models/challenge.js | 2 +- website/server/models/group.js | 2 +- website/server/models/user/methods.js | 2 +- 39 files changed, 47 insertions(+), 47 deletions(-) diff --git a/migrations/s3-upload.js b/migrations/s3-upload.js index fabb819d7d..32ae1d71cb 100644 --- a/migrations/s3-upload.js +++ b/migrations/s3-upload.js @@ -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); } }); diff --git a/test/api/unit/libs/analyticsService.test.js b/test/api/unit/libs/analyticsService.test.js index 27d78d3f3c..c977bef7fc 100644 --- a/test/api/unit/libs/analyticsService.test.js +++ b/test/api/unit/libs/analyticsService.test.js @@ -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) diff --git a/test/api/unit/libs/payments/payments.test.js b/test/api/unit/libs/payments/payments.test.js index b3c5e3c59d..efc11f8e2a 100644 --- a/test/api/unit/libs/payments/payments.test.js +++ b/test/api/unit/libs/payments/payments.test.js @@ -697,7 +697,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); diff --git a/test/api/v3/integration/challenges/POST-challenges.test.js b/test/api/v3/integration/challenges/POST-challenges.test.js index 23475c1f23..8896c3e79d 100644 --- a/test/api/v3/integration/challenges/POST-challenges.test.js +++ b/test/api/v3/integration/challenges/POST-challenges.test.js @@ -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'; diff --git a/test/api/v3/integration/groups/GET-groups_id.test.js b/test/api/v3/integration/groups/GET-groups_id.test.js index 3e2f3b8742..801ee3d434 100644 --- a/test/api/v3/integration/groups/GET-groups_id.test.js +++ b/test/api/v3/integration/groups/GET-groups_id.test.js @@ -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({ diff --git a/test/api/v3/integration/groups/POST-groups_groupId_leave.js b/test/api/v3/integration/groups/POST-groups_groupId_leave.js index 70d60cc3d0..c4764e3428 100644 --- a/test/api/v3/integration/groups/POST-groups_groupId_leave.js +++ b/test/api/v3/integration/groups/POST-groups_groupId_leave.js @@ -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); diff --git a/test/api/v3/integration/payments/amazon/POST-payments_amazon_checkout.test.js b/test/api/v3/integration/payments/amazon/POST-payments_amazon_checkout.test.js index 93d08dc44b..6774317c9c 100644 --- a/test/api/v3/integration/payments/amazon/POST-payments_amazon_checkout.test.js +++ b/test/api/v3/integration/payments/amazon/POST-payments_amazon_checkout.test.js @@ -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', diff --git a/test/api/v3/integration/tasks/DELETE-tasks_id.test.js b/test/api/v3/integration/tasks/DELETE-tasks_id.test.js index d1835ac022..e64923e14d 100644 --- a/test/api/v3/integration/tasks/DELETE-tasks_id.test.js +++ b/test/api/v3/integration/tasks/DELETE-tasks_id.test.js @@ -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', diff --git a/test/api/v3/integration/tasks/GET-tasks_id.test.js b/test/api/v3/integration/tasks/GET-tasks_id.test.js index e46a08706c..d56b3fd151 100644 --- a/test/api/v3/integration/tasks/GET-tasks_id.test.js +++ b/test/api/v3/integration/tasks/GET-tasks_id.test.js @@ -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({ diff --git a/test/api/v3/integration/tasks/challenges/DELETE-tasks_id_challenge_challengeId.test.js b/test/api/v3/integration/tasks/challenges/DELETE-tasks_id_challenge_challengeId.test.js index 14245c3e54..f329775baf 100644 --- a/test/api/v3/integration/tasks/challenges/DELETE-tasks_id_challenge_challengeId.test.js +++ b/test/api/v3/integration/tasks/challenges/DELETE-tasks_id_challenge_challengeId.test.js @@ -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', diff --git a/test/api/v3/integration/user/auth/PUT-user_update_email.test.js b/test/api/v3/integration/user/auth/PUT-user_update_email.test.js index d924a99ebf..9f54b8eeba 100644 --- a/test/api/v3/integration/user/auth/PUT-user_update_email.test.js +++ b/test/api/v3/integration/user/auth/PUT-user_update_email.test.js @@ -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 () => { diff --git a/test/common/libs/getDebuffPotionItems.test.js b/test/common/libs/getDebuffPotionItems.test.js index b1cb41658a..512c2a8834 100644 --- a/test/common/libs/getDebuffPotionItems.test.js +++ b/test/common/libs/getDebuffPotionItems.test.js @@ -15,7 +15,7 @@ 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 + // Here we itterate whole object to dynamically create test suites as // it described in dock of mocha // https://mochajs.org/#dynamically-generating-tests // That's why we have eslint-disable here diff --git a/test/common/ops/unlock.js b/test/common/ops/unlock.js index 5087534b48..80354c2ffc 100644 --- a/test/common/ops/unlock.js +++ b/test/common/ops/unlock.js @@ -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 } }); diff --git a/website/client/src/components/achievements/death.vue b/website/client/src/components/achievements/death.vue index c94b99c848..998c8745e9 100644 --- a/website/client/src/components/achievements/death.vue +++ b/website/client/src/components/achievements/death.vue @@ -32,7 +32,7 @@ :avatar-only="true" :with-background="true" /> - + diff --git a/website/client/src/components/achievements/streak.vue b/website/client/src/components/achievements/streak.vue index 4eac3c1228..d2b9b8be53 100644 --- a/website/client/src/components/achievements/streak.vue +++ b/website/client/src/components/achievements/streak.vue @@ -71,8 +71,8 @@ export default { this.$root.$emit('bv::hide::modal', 'streak'); }, suppressModals () { - const surpress = !!this.user.preferences.suppressModals.streak; - this.$store.dispatch('user:set', { 'preferences.suppressModals.streak': surpress }); + const suppress = !!this.user.preferences.suppressModals.streak; + this.$store.dispatch('user:set', { 'preferences.suppressModals.streak': suppress }); }, }, }; diff --git a/website/client/src/components/auth/registerLoginReset.vue b/website/client/src/components/auth/registerLoginReset.vue index c771514c34..8d1dc9db69 100644 --- a/website/client/src/components/auth/registerLoginReset.vue +++ b/website/client/src/components/auth/registerLoginReset.vue @@ -700,7 +700,7 @@ export default { return; } - // @TODO: implement langauge and invite accepting + // @TODO: implement language and invite accepting // var url = ApiUrl.get() + "/api/v4/user/auth/local/register"; // if (location.search && location.search.indexOf('Invite=') !== -1) // { // matches groupInvite and partyInvite diff --git a/website/client/src/components/chat/chatMessages.vue b/website/client/src/components/chat/chatMessages.vue index 050c03623c..eb9ed8508c 100644 --- a/website/client/src/components/chat/chatMessages.vue +++ b/website/client/src/components/chat/chatMessages.vue @@ -282,7 +282,7 @@ export default { const promises = []; const noProfilesLoaded = Object.keys(this.cachedProfileData).length === 0; - // @TODO: write an explination + // @TODO: write an explanation // @TODO: Remove this after enough messages are cached if ( !noProfilesLoaded diff --git a/website/client/src/components/creatorIntro.vue b/website/client/src/components/creatorIntro.vue index c939251526..93195cda15 100644 --- a/website/client/src/components/creatorIntro.vue +++ b/website/client/src/components/creatorIntro.vue @@ -329,7 +329,7 @@
{{ $t('exercise') }}
diff --git a/website/client/src/components/groups/membersModal.vue b/website/client/src/components/groups/membersModal.vue index b48109ac72..33e48a14e6 100644 --- a/website/client/src/components/groups/membersModal.vue +++ b/website/client/src/components/groups/membersModal.vue @@ -499,7 +499,7 @@ export default { }, watch: { groupId () { - // @TOOD: We might not need this since groupId is computed now + // @TODO: We might not need this since groupId is computed now this.getMembers(); }, challengeId () { diff --git a/website/client/src/components/inventory/equipment/index.vue b/website/client/src/components/inventory/equipment/index.vue index 0d9d819c65..105aed4de8 100644 --- a/website/client/src/components/inventory/equipment/index.vue +++ b/website/client/src/components/inventory/equipment/index.vue @@ -341,7 +341,7 @@ export default { const { firstRender } = viewOptions; const { itemsInFirstPosition } = viewOptions; - // Render selected items in first postion only for the first render + // Render selected items in first position only for the first render if (itemsInFirstPosition.indexOf(ownedItem.key) !== -1 && firstRender === false) { gearItemsByType[type].unshift(ownedItem); } else if (isEquipped === true && firstRender === true) { @@ -382,7 +382,7 @@ export default { const { firstRender } = viewOptions; const { itemsInFirstPosition } = viewOptions; - // Render selected items in first postion only for the first render + // Render selected items in first position only for the first render if (itemsInFirstPosition.indexOf(ownedItem.key) !== -1 && firstRender === false) { gearItemsByClass[klass].unshift(ownedItem); } else if (isEquipped === true && firstRender === true) { diff --git a/website/client/src/libs/logging.js b/website/client/src/libs/logging.js index 89a7725fe4..f2c442e101 100644 --- a/website/client/src/libs/logging.js +++ b/website/client/src/libs/logging.js @@ -29,7 +29,7 @@ export function setUpLogging () { // eslint-disable-line import/prefer-default-e Vue.config.errorHandler = (err, vm, info) => { console.error('Unhandled error in Vue.js code.'); console.error('Error:', err); - console.error('Component where it occured:', vm); + console.error('Component where it occurred:', vm); console.error('Info:', info); _LTracker.push({ diff --git a/website/client/src/mixins/spells.js b/website/client/src/mixins/spells.js index 22da51019b..dc64b987c8 100644 --- a/website/client/src/mixins/spells.js +++ b/website/client/src/mixins/spells.js @@ -165,7 +165,7 @@ export default { } return null; - // @TOOD: User.sync(); + // @TODO: User.sync(); }, castCancel () { this.potionClickMode = false; diff --git a/website/client/tests/unit/components/avatar.spec.js b/website/client/tests/unit/components/avatar.spec.js index d7e970ee5e..96d09702a2 100644 --- a/website/client/tests/unit/components/avatar.spec.js +++ b/website/client/tests/unit/components/avatar.spec.js @@ -112,7 +112,7 @@ context('avatar.vue', () => { }; }); - it('returns if showing equiped gear', () => { + it('returns if showing equipped gear', () => { expect(vm.costumeClass).to.equal('equipped'); }); it('returns if wearing a costume', () => { diff --git a/website/common/locales/en_GB/gear.json b/website/common/locales/en_GB/gear.json index 70dc1bfed0..ec7be61cf3 100644 --- a/website/common/locales/en_GB/gear.json +++ b/website/common/locales/en_GB/gear.json @@ -540,7 +540,7 @@ "armorSpecialWinter2016MageNotes": "The wisest wizard keeps well-bundled in the winter wind. Increases Intelligence by <%= int %>. Limited Edition 2015-2016 Winter Gear.", "armorSpecialWinter2016HealerText": "Festive Fairy Cloak", "armorSpecialWinter2016HealerNotes": "Festive Fairies wrap their body wings around themselves for protection as they use their head wings to catch headwinds and fly around Habitica at speeds of up to 100 mph, delivering gifts and spraying everyone with confetti. How droll. Increases Constitution by <%= con %>. Limited Edition 2015-2016 Winter Gear.", - "armorSpecialSpring2016RogueText": "Canine Camouflauge Suit", + "armorSpecialSpring2016RogueText": "Canine Camouflage Suit", "armorSpecialSpring2016RogueNotes": "A clever pup knows to choose a brighter guise for concealment when everything is green and vibrant. Increases Perception by <%= per %>. Limited Edition 2016 Spring Gear.", "armorSpecialSpring2016WarriorText": "Mighty Mail", "armorSpecialSpring2016WarriorNotes": "Though you be but little, you are fierce! Increases Constitution by <%= con %>. Limited Edition 2016 Spring Gear.", diff --git a/website/common/script/cron.js b/website/common/script/cron.js index 53be939a4e..8afca4bcda 100644 --- a/website/common/script/cron.js +++ b/website/common/script/cron.js @@ -66,7 +66,7 @@ export function startOfWeek (options = {}) { /* This is designed for use with any date that has an important time portion (e.g., when comparing the current date-time with the previous cron's date-time - for determing if cron should run now). + for determining if cron should run now). It changes the time portion of the date-time to be the Custom Day Start hour, so that the date-time is now the user's correct start of day. It SUBTRACTS a day if the date-time's original hour is before CDS diff --git a/website/common/script/ops/pinnedGearUtils.js b/website/common/script/ops/pinnedGearUtils.js index 1150fb6a2f..e7a0f98bd1 100644 --- a/website/common/script/ops/pinnedGearUtils.js +++ b/website/common/script/ops/pinnedGearUtils.js @@ -157,7 +157,7 @@ export function togglePinnedItem (user, { item, type, path }, req = {}) { } if (isOfficialPinned) { - // if an offical item is also present in the user.pinnedItems array + // if an official item is also present in the user.pinnedItems array const itemInUserItems = pathExistsInArray(user.pinnedItems, path); if (itemInUserItems !== -1) { diff --git a/website/server/controllers/api-v3/content.js b/website/server/controllers/api-v3/content.js index 727a56fa13..15cbf282c8 100644 --- a/website/server/controllers/api-v3/content.js +++ b/website/server/controllers/api-v3/content.js @@ -82,7 +82,7 @@ async function saveContentToDisk (language, content) { * the user's configured language. * * @apiSuccess {Object} data Various data about the content of Habitica. The content route - * contains many keys, but the data listed below are the recomended data to use. + * contains many keys, but the data listed below are the recommended data to use. * @apiSuccess {Object} data.mystery The mystery sets awarded to paying subscribers. * @apiSuccess {Object} data.gear The gear that can be equipped. * @apiSuccess {Object} data.gear.tree Detailed information about the gear, organized by type. @@ -101,7 +101,7 @@ async function saveContentToDisk (language, content) { * @apiSuccess {Object} data.food All the food. * @apiSuccess {Array} data.userCanOwnQuestCategories The types of quests that a user can own. * @apiSuccess {Object} data.quests Data about the quests. - * @apiSuccess {Object} data.appearances Data about the apperance properties. + * @apiSuccess {Object} data.appearances Data about the appearance properties. * @apiSuccess {Object} data.appearances.hair Data about available hair options. * @apiSuccess {Object} data.appearances.shirt Data about available shirt options. * @apiSuccess {Object} data.appearances.size Data about available body size options. @@ -109,7 +109,7 @@ async function saveContentToDisk (language, content) { * @apiSuccess {Object} data.appearances.chair Data about available chair options. * @apiSuccess {Object} data.appearances.background Data about available background options. * @apiSuccess {Object} data.backgrounds Data about the background sets. - * @apiSuccess {Object} data.subscriptionBlocks Data about the various subscirption blocks. + * @apiSuccess {Object} data.subscriptionBlocks Data about the various subscriptions blocks. * */ api.getContent = { diff --git a/website/server/controllers/api-v3/groups.js b/website/server/controllers/api-v3/groups.js index dbfaac3ba2..1fb322e0f3 100644 --- a/website/server/controllers/api-v3/groups.js +++ b/website/server/controllers/api-v3/groups.js @@ -1049,7 +1049,7 @@ api.removeGroupMember = { * * @apiSuccess {Array} data The invites * @apiSuccess {Object} data[0] If the invitation was a User ID, you'll receive back an object. - * You'll receive one Object for each succesful User ID invite. + * You'll receive one Object for each successful User ID invite. * @apiSuccess {String} data[1] If the invitation was an email, you'll receive back the email. * You'll receive one String for each successful email invite. * diff --git a/website/server/controllers/api-v3/hall.js b/website/server/controllers/api-v3/hall.js index 2874cd9b35..8e28fbc17a 100644 --- a/website/server/controllers/api-v3/hall.js +++ b/website/server/controllers/api-v3/hall.js @@ -267,7 +267,7 @@ api.updateHero = { while (tierDiff) { hero.balance += gemsPerTier[newTier] / 4; // balance is in $ tierDiff -= 1; - newTier -= 1; // give them gems for the next tier down if they weren't aready that tier + newTier -= 1; // give them gems for the next tier down if they weren't already that tier } hero.addNotification('NEW_CONTRIBUTOR_LEVEL'); diff --git a/website/server/controllers/api-v3/members.js b/website/server/controllers/api-v3/members.js index 74e5ea15d5..9a2736d0a8 100644 --- a/website/server/controllers/api-v3/members.js +++ b/website/server/controllers/api-v3/members.js @@ -486,7 +486,7 @@ api.getInvitesForGroup = { * until you get less than 30 results. * BETA You can also use ?includeAllMembers=true. This option is currently in BETA * and may be removed in future. - * Its use is discouraged and its performaces are not optimized especially for large challenges. + * Its use is discouraged and its performances are not optimized especially for large challenges. * * @apiName GetMembersForChallenge * @apiGroup Member diff --git a/website/server/controllers/api-v3/user.js b/website/server/controllers/api-v3/user.js index 1594e4fd7c..3fe24678f4 100644 --- a/website/server/controllers/api-v3/user.js +++ b/website/server/controllers/api-v3/user.js @@ -989,7 +989,7 @@ api.purchase = { if (!canGetGems) throw new NotAuthorized(res.t('groupPolicyCannotGetGems')); } - // Req is currently used as options. Slighly confusing, but this will solve that for now. + // Req is currently used as options. Slightly confusing, but this will solve that for now. let quantity = 1; if (req.body.quantity) quantity = req.body.quantity; req.quantity = quantity; diff --git a/website/server/controllers/top-level/dataexport.js b/website/server/controllers/top-level/dataexport.js index 4aead64047..7d55fb4074 100644 --- a/website/server/controllers/top-level/dataexport.js +++ b/website/server/controllers/top-level/dataexport.js @@ -27,7 +27,7 @@ const api = {}; * @apiDefine DataExport Data Export * These routes allow you to download backups of your data. * - * **Note:** They are intented to be used on the website only and as such are part + * **Note:** They are intended to be used on the website only and as such are part * of the private API and may change at any time. */ diff --git a/website/server/libs/auth/index.js b/website/server/libs/auth/index.js index 495096062e..7b5b3c8c73 100644 --- a/website/server/libs/auth/index.js +++ b/website/server/libs/auth/index.js @@ -113,7 +113,7 @@ async function registerLocal (req, res, { isV3 = false }) { const { password } = req.body; // Get the lowercase version of username to check that we do not have duplicates - // So we can search for it in the database and then reject the choosen + // So we can search for it in the database and then reject the chosen // username if 1 or more results are found email = email.toLowerCase(); username = username.trim(); diff --git a/website/server/libs/i18n.js b/website/server/libs/i18n.js index de620003a6..85f8c14880 100644 --- a/website/server/libs/i18n.js +++ b/website/server/libs/i18n.js @@ -10,7 +10,7 @@ export const translations = {}; // Store MomentJS localization files export const momentLangs = {}; -// Handle differencies in language codes between MomentJS and /locales +// Handle differences in language codes between MomentJS and /locales const momentLangsMapping = { en: 'en-gb', en_GB: 'en-gb', // eslint-disable-line camelcase diff --git a/website/server/libs/taskManager.js b/website/server/libs/taskManager.js index 729bb4f30b..9a06be5772 100644 --- a/website/server/libs/taskManager.js +++ b/website/server/libs/taskManager.js @@ -268,7 +268,7 @@ export function syncableAttrs (task) { * * @param order The list of ordered tasks * @param taskId The Task._id of the task to move - * @param to A integer specifiying the index to move the task to + * @param to A integer specifying the index to move the task to * * @return Empty */ diff --git a/website/server/middlewares/errorHandler.js b/website/server/middlewares/errorHandler.js index 4fddc09dd0..b73b9d6df3 100644 --- a/website/server/middlewares/errorHandler.js +++ b/website/server/middlewares/errorHandler.js @@ -84,7 +84,7 @@ export default function errorHandler (err, req, res, next) { // eslint-disable-l jsonRes.errors = responseErr.errors; } - // In some occasions like when invalid JSON is supplied `res.respond` might be not yet avalaible, + // In some occasions like when invalid JSON is supplied `res.respond` might be not yet available, // in this case we use the standard res.status(...).json(...) return res.status(responseErr.httpCode).json(jsonRes); } diff --git a/website/server/models/challenge.js b/website/server/models/challenge.js index 3707b2a929..5f37c3aa9e 100644 --- a/website/server/models/challenge.js +++ b/website/server/models/challenge.js @@ -56,7 +56,7 @@ schema.plugin(baseModel, { schema.pre('init', chal => { // The Vue website makes the summary be mandatory for all new challenges, but the - // Angular website did not, and the API does not yet for backwards-compatibilty. + // Angular website did not, and the API does not yet for backwards-compatibility. // When any challenge without a summary is fetched from the database, this code // supplies the name as the summary. This can be removed when all challenges have // a summary and the API makes it mandatory (a breaking change!) diff --git a/website/server/models/group.js b/website/server/models/group.js index 805532f280..dbdcee2d60 100644 --- a/website/server/models/group.js +++ b/website/server/models/group.js @@ -158,7 +158,7 @@ schema.plugin(baseModel, { schema.pre('init', group => { // The Vue website makes the summary be mandatory for all new groups, but the - // Angular website did not, and the API does not yet for backwards-compatibilty. + // Angular website did not, and the API does not yet for backwards-compatibility. // When any guild without a summary is fetched from the database, this code // supplies the name as the summary. This can be removed when all guilds have // a summary and the API makes it mandatory (a breaking change!) diff --git a/website/server/models/user/methods.js b/website/server/models/user/methods.js index d1ef743b1e..49fe2fc73f 100644 --- a/website/server/models/user/methods.js +++ b/website/server/models/user/methods.js @@ -329,7 +329,7 @@ schema.statics.addComputedStatsToJSONObj = function addComputedStatsToUserJSONOb // This creates some odd Dependency Injection issues. To counter that, // we use the user as the third layer // To negotiate between the payment providers and the payment helper -// (which probably has too many responsiblities) +// (which probably has too many responsibilities) // In summary, currently is is best practice to use this method to cancel a user subscription, // rather than calling the // payment helper. From dd0bcfab97e73869c461b32fee92932e25bcdbcd Mon Sep 17 00:00:00 2001 From: negue Date: Mon, 23 Dec 2019 18:10:48 +0100 Subject: [PATCH 19/43] fix challenge layout (#11620) * wrap challenge task icons + margins * full width challenge card on small devices + padding under add-challenge button --- .../src/components/challenges/challengeItem.vue | 5 ++++- .../src/components/challenges/findChallenges.vue | 11 +++++++++++ .../client/src/components/challenges/myChallenges.vue | 11 +++++++++++ 3 files changed, 26 insertions(+), 1 deletion(-) diff --git a/website/client/src/components/challenges/challengeItem.vue b/website/client/src/components/challenges/challengeItem.vue index 5dd44f0656..b3a1fd61e0 100644 --- a/website/client/src/components/challenges/challengeItem.vue +++ b/website/client/src/components/challenges/challengeItem.vue @@ -294,8 +294,9 @@ justify-content: space-evenly; background-color: $gray-700; text-align: center; - padding: 16px; + padding: 8px; border-radius: .25em; + flex-wrap: wrap; > div { .value { @@ -326,6 +327,8 @@ } > div.muted { + margin: 8px; + .value { opacity: 0.5; font-size: 20px; diff --git a/website/client/src/components/challenges/findChallenges.vue b/website/client/src/components/challenges/findChallenges.vue index b75bd6f427..7c4342af78 100644 --- a/website/client/src/components/challenges/findChallenges.vue +++ b/website/client/src/components/challenges/findChallenges.vue @@ -68,6 +68,17 @@