From 9f9e6c495020916c33ec46a5a055988565e39c19 Mon Sep 17 00:00:00 2001 From: SabreCat Date: Wed, 3 May 2023 16:00:58 -0500 Subject: [PATCH 1/4] feat(links): skip modal for user's own tasks --- website/client/src/components/tasks/task.vue | 1 + website/client/src/mixins/externalLinks.js | 1 + 2 files changed, 2 insertions(+) diff --git a/website/client/src/components/tasks/task.vue b/website/client/src/components/tasks/task.vue index 520c51568c..ece67dd374 100644 --- a/website/client/src/components/tasks/task.vue +++ b/website/client/src/components/tasks/task.vue @@ -6,6 +6,7 @@ 'groupTask': task.group.id, 'task-not-editable': !teamManagerAccess, 'task-not-scoreable': showTaskLockIcon, + 'link-exempt': !isChallengeTask && !isGroupTask, }, `type_${task.type}` ]" @click="castEnd($event, task)" diff --git a/website/client/src/mixins/externalLinks.js b/website/client/src/mixins/externalLinks.js index 2a2c0a7b8c..40895cd4f9 100644 --- a/website/client/src/mixins/externalLinks.js +++ b/website/client/src/mixins/externalLinks.js @@ -16,6 +16,7 @@ export default { } if ((link.classList.value.indexOf('external-link') === -1) + && (!link.offsetParent || link.offsetParent.classList.value.indexOf('link-exempt') === -1) && domainIndex !== 1 && !some(TRUSTED_DOMAINS.split(','), domain => link.href.indexOf(domain) === domainIndex)) { link.classList.add('external-link'); From b026daec90d59fec07268bfb2ad77d7501d7a9ff Mon Sep 17 00:00:00 2001 From: SabreCat Date: Fri, 5 May 2023 16:27:19 -0500 Subject: [PATCH 2/4] fix(rya): wait for DOM finished before update --- website/client/src/components/tasks/yesterdailyModal.vue | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/website/client/src/components/tasks/yesterdailyModal.vue b/website/client/src/components/tasks/yesterdailyModal.vue index a0f5ae4ab2..a43230a177 100644 --- a/website/client/src/components/tasks/yesterdailyModal.vue +++ b/website/client/src/components/tasks/yesterdailyModal.vue @@ -110,7 +110,9 @@ export default { }; }, updated () { - this.handleExternalLinks(); + window.setTimeout(() => { + this.handleExternalLinks(); + }, 500); }, computed: { ...mapState({ user: 'user.data' }), From 453bf3a961ad19ec80a211ad2211e2b297a028f8 Mon Sep 17 00:00:00 2001 From: Natalie L <78037386+CuriousMagpie@users.noreply.github.com> Date: Tue, 9 May 2023 11:26:00 -0400 Subject: [PATCH 3/4] feat(content): add May Backgrounds and Enchanted Armoire items (#14628) --- habitica-images | 2 +- .../assets/css/sprites/spritesmith-main.css | 75 +++++++++++++++++++ website/common/locales/en/backgrounds.json | 8 ++ website/common/locales/en/gear.json | 10 ++- .../script/content/appearance/backgrounds.js | 5 ++ .../script/content/gear/sets/armoire.js | 16 ++++ 6 files changed, 114 insertions(+), 2 deletions(-) diff --git a/habitica-images b/habitica-images index 311cb01059..dac6a71d1f 160000 --- a/habitica-images +++ b/habitica-images @@ -1 +1 @@ -Subproject commit 311cb010591a9de368a1ab5db7506d2d3efbb10b +Subproject commit dac6a71d1fa2500bf8f3ec18bf917cbe91d82d64 diff --git a/website/client/src/assets/css/sprites/spritesmith-main.css b/website/client/src/assets/css/sprites/spritesmith-main.css index 8a5531760f..b3c0c74c78 100644 --- a/website/client/src/assets/css/sprites/spritesmith-main.css +++ b/website/client/src/assets/css/sprites/spritesmith-main.css @@ -820,6 +820,11 @@ width: 141px; height: 147px; } +.background_cretaceous_forest { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_cretaceous_forest.png'); + width: 141px; + height: 147px; +} .background_crosscountry_ski_trail { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_crosscountry_ski_trail.png'); width: 141px; @@ -1054,6 +1059,11 @@ width: 141px; height: 147px; } +.background_flying_over_hedge_maze { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_flying_over_hedge_maze.png'); + width: 141px; + height: 147px; +} .background_flying_over_icy_steppes { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_flying_over_icy_steppes.png'); width: 141px; @@ -1329,6 +1339,11 @@ width: 141px; height: 147px; } +.background_in_a_painting { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_in_a_painting.png'); + width: 141px; + height: 147px; +} .background_in_an_ancient_tomb { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_in_an_ancient_tomb.png'); width: 141px; @@ -2506,6 +2521,11 @@ width: 68px; height: 68px; } +.icon_background_cretaceous_forest { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_cretaceous_forest.png'); + width: 68px; + height: 68px; +} .icon_background_crosscountry_ski_trail { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_crosscountry_ski_trail.png'); width: 68px; @@ -2740,6 +2760,11 @@ width: 68px; height: 68px; } +.icon_background_flying_over_hedge_maze { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_flying_over_hedge_maze.png'); + width: 68px; + height: 68px; +} .icon_background_flying_over_icy_steppes { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_flying_over_icy_steppes.png'); width: 68px; @@ -3015,6 +3040,11 @@ width: 68px; height: 68px; } +.icon_background_in_a_painting { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_in_a_painting.png'); + width: 68px; + height: 68px; +} .icon_background_in_an_ancient_tomb { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_in_an_ancient_tomb.png'); width: 68px; @@ -18640,6 +18670,11 @@ width: 90px; height: 90px; } +.broad_armor_armoire_paintersApron { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_armoire_paintersApron.png'); + width: 114px; + height: 90px; +} .broad_armor_armoire_pirateOutfit { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_armoire_pirateOutfit.png'); width: 114px; @@ -19130,6 +19165,11 @@ width: 90px; height: 90px; } +.head_armoire_paintersBeret { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/head_armoire_paintersBeret.png'); + width: 114px; + height: 90px; +} .head_armoire_paperBag { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/head_armoire_paperBag.png'); width: 90px; @@ -19470,6 +19510,11 @@ width: 90px; height: 90px; } +.shield_armoire_paintersPalette { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shield_armoire_paintersPalette.png'); + width: 114px; + height: 90px; +} .shield_armoire_perchingFalcon { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shield_armoire_perchingFalcon.png'); width: 90px; @@ -19910,6 +19955,11 @@ width: 68px; height: 68px; } +.shop_armor_armoire_paintersApron { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_armor_armoire_paintersApron.png'); + width: 68px; + height: 68px; +} .shop_armor_armoire_pirateOutfit { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_armor_armoire_pirateOutfit.png'); width: 68px; @@ -20415,6 +20465,11 @@ width: 68px; height: 68px; } +.shop_head_armoire_paintersBeret { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_head_armoire_paintersBeret.png'); + width: 68px; + height: 68px; +} .shop_head_armoire_paperBag { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_head_armoire_paperBag.png'); width: 68px; @@ -20755,6 +20810,11 @@ width: 68px; height: 68px; } +.shop_shield_armoire_paintersPalette { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_shield_armoire_paintersPalette.png'); + width: 68px; + height: 68px; +} .shop_shield_armoire_perchingFalcon { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_shield_armoire_perchingFalcon.png'); width: 68px; @@ -21200,6 +21260,11 @@ width: 68px; height: 68px; } +.shop_weapon_armoire_paintbrush { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_weapon_armoire_paintbrush.png'); + width: 68px; + height: 68px; +} .shop_weapon_armoire_paperCutter { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_weapon_armoire_paperCutter.png'); width: 68px; @@ -21655,6 +21720,11 @@ width: 90px; height: 90px; } +.slim_armor_armoire_paintersApron { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/slim_armor_armoire_paintersApron.png'); + width: 114px; + height: 90px; +} .slim_armor_armoire_pirateOutfit { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/slim_armor_armoire_pirateOutfit.png'); width: 114px; @@ -22110,6 +22180,11 @@ width: 114px; height: 90px; } +.weapon_armoire_paintbrush { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/weapon_armoire_paintbrush.png'); + width: 114px; + height: 90px; +} .weapon_armoire_paperCutter { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/weapon_armoire_paperCutter.png'); width: 114px; diff --git a/website/common/locales/en/backgrounds.json b/website/common/locales/en/backgrounds.json index e0f8c4b297..f04714906f 100644 --- a/website/common/locales/en/backgrounds.json +++ b/website/common/locales/en/backgrounds.json @@ -875,6 +875,14 @@ "backgroundUnderWisteriaText": "Under Wisteria", "backgroundUnderWisteriaNotes": "Relax Under Wisteria.", + "backgrounds052023": "SET 108: Released May 2023", + "backgroundInAPaintingText": "In A Painting", + "backgroundInAPaintingNotes": "Enjoy creative pursuits Inside a Painting.", + "backgroundFlyingOverHedgeMazeText": "Flying Over Hedge Maze", + "backgroundFlyingOverHedgeMazeNotes": "Marvel while Flying over a Hedge Maze.", + "backgroundCretaceousForestText": "Cretaceous Forest", + "backgroundCretaceousForestNotes": "Take in the ancient greenery of a Cretaceous Forest.", + "timeTravelBackgrounds": "Steampunk Backgrounds", "backgroundAirshipText": "Airship", "backgroundAirshipNotes": "Become a sky sailor on board your very own Airship.", diff --git a/website/common/locales/en/gear.json b/website/common/locales/en/gear.json index dde67616f2..28a2b6a77f 100644 --- a/website/common/locales/en/gear.json +++ b/website/common/locales/en/gear.json @@ -694,6 +694,8 @@ "weaponArmoireMagicSpatulaNotes": "Watch your food fly and flip in the air. You get good luck for the day if it magically flips over three times and then lands back on your spatula. Increases Perception by <%= per %>. Enchanted Armoire: Cooking Implements Set (Item 1 of 2).", "weaponArmoireFinelyCutGemText": "Finely Cut Gem", "weaponArmoireFinelyCutGemNotes": "What a find! This stunning, precision-cut gem will be the prize of your collection. And it might contain some special magic, just waiting for you to tap into it. Increases Constitution by <%= con %>. Enchanted Armoire: Jeweler Set (Item 4 of 4).", + "weaponArmoirePaintbrushText": "Paintbrush", + "weaponArmoirePaintbrushNotes": "A jolt of pure inspiration rushes through you when you pick up this brush, allowing you to paint anything you can imagine. Increases Intelligence by <%= int %>. Enchanted Armoire: Painter Set (Item 3 of 4).", "armor": "armor", "armorCapitalized": "Armor", @@ -1453,6 +1455,8 @@ "armorArmoireTeaGownNotes": "You’re resilient, creative, brilliant, and so fashionable! Increases Strength and Intelligence by <%= attrs %> each. Enchanted Armoire: Tea Party Set (Item 1 of 3).", "armorArmoireBasketballUniformText": "Basketball Uniform", "armorArmoireBasketballUniformNotes": "Wondering what’s printed on the back of this uniform? It’s your lucky number, of course! Increases Perception by <% per %>. Enchanted Armoire: Old Timey Basketball Set (Item 1 of 2).", + "armorArmoirePaintersApronText": "Painter's Apron", + "armorArmoirePaintersApronNotes": "This apron can protect your clothes from paint and your creative projects from harsh critiques. Increases Constitution by <%= con %>. Enchanted Armoire: Painter Set (Item 1 of 4).", "headgear": "helm", "headgearCapitalized": "Headgear", @@ -2232,6 +2236,8 @@ "headArmoireTeaHatNotes": "This elegant hat is both fancy and functional. Increases Perception by <%= per %>. Enchanted Armoire: Tea Party Set (Item 2 of 3).", "headArmoireBeaniePropellerHatText": "Beanie Propeller Hat", "headArmoireBeaniePropellerHatNotes": "This isn’t the time to keep your feet on the ground! Spin this little propeller and rise as high as your ambitions will take you. Increases all stats by <%= attrs %>. Enchanted Armoire: Independent Item.", + "headArmoirePaintersBeretText": "Painter's Beret", + "headArmoirePaintersBeretNotes": "See the world with a more artistic eye when you wear this jaunty beret. Increases Perception by <%= per %>. Enchanted Armoire: Painter Set (Item 2 of 4).", "offhand": "off-hand item", "offHandCapitalized": "Off-Hand Item", @@ -2646,7 +2652,9 @@ "shieldArmoireTeaKettleText": "Tea Kettle", "shieldArmoireTeaKettleNotes": "All your favorite, flavorful teas can be brewed in this kettle. Are you in the mood for black tea, green tea, oolong, or perhaps an herbal infusion? Increases Constitution by <%= con %>. Enchanted Armoire: Tea Party Set (Item 3 of 3).", "shieldArmoireBasketballText": "Basketball", - "shieldArmoireBasketballNotes": "Swish! Whenever you shoot this magic basketball, there will be nothing but net. Increases Constitution and Strength by <%= attrs %> each. Enchanted Armoire: Old Timey Basketball Set (Item 2 of 2).", + "shieldArmoireBasketballNotes": "Swish! Whenever you shoot this magic basketball, there will be nothing but net. Increases Constitution and Strength by <%= attrs %> each. Enchanted Armoire: Old Timey Basketball Set (Item 2 of 2).", + "shieldArmoirePaintersPaletteText": "Painter's Palette", + "shieldArmoirePaintersPaletteNotes": "Paints in all colors of the rainbow are at your disposal. Is it magic that makes them so vivid when you use them, or is it your talent? Increases Strength by <%= str %>. Enchanted Armoire: Painter Set (Item 4 of 4).", "back": "Back Accessory", "backBase0Text": "No Back Accessory", diff --git a/website/common/script/content/appearance/backgrounds.js b/website/common/script/content/appearance/backgrounds.js index 1a1ddd05a8..c5f769e073 100644 --- a/website/common/script/content/appearance/backgrounds.js +++ b/website/common/script/content/appearance/backgrounds.js @@ -555,6 +555,11 @@ const backgrounds = { springtime_shower: { }, under_wisteria: { }, }, + backgrounds052023: { + in_a_painting: { }, + flying_over_hedge_maze: { }, + cretaceous_forest: { }, + }, eventBackgrounds: { birthday_bash: { price: 0, diff --git a/website/common/script/content/gear/sets/armoire.js b/website/common/script/content/gear/sets/armoire.js index df27c95e7a..4efc4ce3e2 100644 --- a/website/common/script/content/gear/sets/armoire.js +++ b/website/common/script/content/gear/sets/armoire.js @@ -420,6 +420,10 @@ const armor = { per: 10, set: 'oldTimeyBasketball', }, + paintersApron: { + con: 10, + set: 'painters', + }, }; const body = { @@ -851,6 +855,10 @@ const head = { str: 3, int: 3, }, + paintersBeret: { + per: 9, + set: 'painters', + }, }; const shield = { @@ -1161,6 +1169,10 @@ const shield = { str: 5, set: 'oldTimeyBasketball', }, + paintersPalette: { + str: 7, + set: 'painters', + }, }; const headAccessory = { @@ -1603,6 +1615,10 @@ const weapon = { con: 10, set: 'jewelers', }, + paintbrush: { + int: 8, + set: 'painters', + }, }; forEach({ From f3348aca4ccc12f77e9aacdfde578e1377819ed0 Mon Sep 17 00:00:00 2001 From: SabreCat Date: Tue, 9 May 2023 10:29:19 -0500 Subject: [PATCH 4/4] 4.270.0 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index e2a8d71df9..b8951a0708 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "habitica", - "version": "4.269.1", + "version": "4.270.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 5a6afb27c3..bb3c7519d8 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "habitica", "description": "A habit tracker app which treats your goals like a Role Playing Game.", - "version": "4.269.1", + "version": "4.270.0", "main": "./website/server/index.js", "dependencies": { "@babel/core": "^7.20.12",