diff --git a/config.json.example b/config.json.example index 9872fad88f..11887285ed 100644 --- a/config.json.example +++ b/config.json.example @@ -87,5 +87,5 @@ "REDIS_HOST": "aaabbbcccdddeeefff", "REDIS_PORT": "1234", "REDIS_PASSWORD": "12345678", - "TRUSTED_DOMAINS": "https://localhost,https://habitica.com" + "TRUSTED_DOMAINS": "localhost,habitica.com" } diff --git a/habitica-images b/habitica-images index 9982925604..109539e445 160000 --- a/habitica-images +++ b/habitica-images @@ -1 +1 @@ -Subproject commit 99829256042943a2c87b2c9a958486046fa0a804 +Subproject commit 109539e445936786e183ac800c1d956e1999f2b8 diff --git a/migrations/archive/2023/20230718_summer_splash_orcas.js b/migrations/archive/2023/20230718_summer_splash_orcas.js new file mode 100644 index 0000000000..2b771e901b --- /dev/null +++ b/migrations/archive/2023/20230718_summer_splash_orcas.js @@ -0,0 +1,79 @@ +/* eslint-disable no-console */ +const MIGRATION_NAME = '20230718_summer_splash_orcas'; + +import { model as User } from '../../../website/server/models/user'; + +const progressCount = 1000; +let count = 0; + +async function updateUser (user) { + count++; + + const set = { migration: MIGRATION_NAME }; + const push = {}; + + if (user && user.items && user.items.pets && typeof user.items.pets['Orca-Base'] !== 'undefined') { + return; + } else if (user && user.items && user.items.mounts && typeof user.items.mounts['Orca-Base'] !== 'undefined') { + set['items.pets.Orca-Base'] = 5; + push.notifications = { + type: 'ITEM_RECEIVED', + data: { + icon: 'notif_orca_pet', + title: 'Orcas for Summer Splash!', + text: 'To celebrate Summer Splash, we\'ve given you an Orca Pet!', + destination: 'stable', + }, + seen: false, + }; + } else { + set['items.mounts.Orca-Base'] = true; + push.notifications = { + type: 'ITEM_RECEIVED', + data: { + icon: 'notif_orca_mount', + title: 'Orcas for Summer Splash!', + text: 'To celebrate Summer Splash, we\'ve given you an Orca Mount!', + destination: 'stable', + }, + seen: false, + }; + } + + if (count % progressCount === 0) console.warn(`${count} ${user._id}`); + + return await user.updateOne({ $set: set, $push: push }).exec(); +} + +export default async function processUsers () { + let query = { + migration: {$ne: MIGRATION_NAME}, + 'auth.timestamps.loggedin': {$gt: new Date('2023-06-18')}, + }; + + const fields = { + _id: 1, + items: 1, + }; + + while (true) { // eslint-disable-line no-constant-condition + const users = await User // eslint-disable-line no-await-in-loop + .find(query) + .limit(250) + .sort({_id: 1}) + .select(fields) + .exec(); + + if (users.length === 0) { + console.warn('All appropriate users found and modified.'); + console.warn(`\n${count} users processed\n`); + break; + } else { + query._id = { + $gt: users[users.length - 1], + }; + } + + await Promise.all(users.map(updateUser)); // eslint-disable-line no-await-in-loop + } +}; diff --git a/migrations/archive/2023/20230731_naming_day.js b/migrations/archive/2023/20230731_naming_day.js new file mode 100644 index 0000000000..58ccfbb728 --- /dev/null +++ b/migrations/archive/2023/20230731_naming_day.js @@ -0,0 +1,155 @@ +/* eslint-disable no-console */ +const MIGRATION_NAME = '20230731_naming_day'; +import { v4 as uuid } from 'uuid'; + +import { model as User } from '../../../website/server/models/user'; + +const progressCount = 1000; +let count = 0; + +async function updateUser (user) { + count++; + + let set; + let push; + const inc = { + 'items.food.Cake_Base': 1, + 'items.food.Cake_CottonCandyBlue': 1, + 'items.food.Cake_CottonCandyPink': 1, + 'items.food.Cake_Desert': 1, + 'items.food.Cake_Golden': 1, + 'items.food.Cake_Red': 1, + 'items.food.Cake_Shade': 1, + 'items.food.Cake_Skeleton': 1, + 'items.food.Cake_White': 1, + 'items.food.Cake_Zombie': 1, + 'achievements.habiticaDays': 1, + }; + + if (user && user.items && user.items.gear && user.items.gear.owned && typeof user.items.gear.owned.back_special_namingDay2020 !== 'undefined') { + set = { migration: MIGRATION_NAME }; + push = { + notifications: { + type: 'ITEM_RECEIVED', + data: { + icon: 'notif_namingDay_cake', + title: 'Happy Naming Day!', + text: 'To celebrate the day we became Habitica, we’ve awarded you some cake!', + destination: '/inventory/items', + }, + seen: false, + }, + }; + } else if (user && user.items && user.items.gear && user.items.gear.owned && typeof user.items.gear.owned.body_special_namingDay2018 !== 'undefined') { + set = { migration: MIGRATION_NAME, 'items.gear.owned.back_special_namingDay2020': true }; + push = { + notifications: { + type: 'ITEM_RECEIVED', + data: { + icon: 'notif_namingDay_back', + title: 'Happy Naming Day!', + text: 'To celebrate the day we became Habitica, we’ve awarded you a Royal Purple Gryphon Tail and cake!', + destination: '/inventory/equipment', + }, + seen: false, + }, + }; + } else if (user && user.items && user.items.gear && user.items.gear.owned && typeof user.items.gear.owned.head_special_namingDay2017 !== 'undefined') { + set = { migration: MIGRATION_NAME, 'items.gear.owned.body_special_namingDay2018': true }; + push = { + notifications: { + type: 'ITEM_RECEIVED', + data: { + icon: 'notif_namingDay_body', + title: 'Happy Naming Day!', + text: 'To celebrate the day we became Habitica, we’ve awarded you a Royal Purple Gryphon Cloak and cake!', + destination: '/inventory/equipment', + }, + seen: false, + }, + }; + } else if (user && user.items && user.items.pets && typeof user.items.pets['Gryphon-RoyalPurple'] !== 'undefined') { + set = { migration: MIGRATION_NAME, 'items.gear.owned.head_special_namingDay2017': true }; + push = { + notifications: { + type: 'ITEM_RECEIVED', + data: { + icon: 'notif_namingDay_head', + title: 'Happy Naming Day!', + text: 'To celebrate the day we became Habitica, we’ve awarded you a Royal Purple Gryphon Helm and cake!', + destination: '/inventory/equipment', + }, + seen: false, + }, + }; + } else if (user && user.items && user.items.mounts && typeof user.items.mounts['Gryphon-RoyalPurple'] !== 'undefined') { + set = { migration: MIGRATION_NAME, 'items.pets.Gryphon-RoyalPurple': 5 }; + push = { + notifications: { + type: 'ITEM_RECEIVED', + data: { + icon: 'notif_namingDay_pet', + title: 'Happy Naming Day!', + text: 'To celebrate the day we became Habitica, we’ve awarded you a Royal Purple Gryphon Pet and cake!', + destination: '/inventory/stable', + }, + seen: false, + }, + }; + } else { + set = { migration: MIGRATION_NAME, 'items.mounts.Gryphon-RoyalPurple': true }; + push = { + notifications: { + type: 'ITEM_RECEIVED', + data: { + icon: 'notif_namingDay_mount', + title: 'Happy Naming Day!', + text: 'To celebrate the day we became Habitica, we’ve awarded you a Royal Purple Gryphon Mount and cake!', + destination: '/inventory/stable', + }, + seen: false, + }, + }; + } + + if (count % progressCount === 0) console.warn(`${count} ${user._id}`); + + if (push) { + return await user.updateOne({ $set: set, $inc: inc, $push: push }).exec(); + } else { + return await user.updateOne({ $set: set, $inc: inc }).exec(); + } +} + +export default async function processUsers () { + let query = { + migration: { $ne: MIGRATION_NAME }, + 'auth.timestamps.loggedin': { $gt: new Date('2023-07-01') }, + }; + + const fields = { + _id: 1, + items: 1, + }; + + while (true) { // eslint-disable-line no-constant-condition + const users = await User // eslint-disable-line no-await-in-loop + .find(query) + .limit(250) + .sort({_id: 1}) + .select(fields) + .exec(); + + if (users.length === 0) { + console.warn('All appropriate users found and modified.'); + console.warn(`\n${count} users processed\n`); + break; + } else { + query._id = { + $gt: users[users.length - 1]._id, + }; + } + + await Promise.all(users.map(updateUser)); // eslint-disable-line no-await-in-loop + } +}; diff --git a/package-lock.json b/package-lock.json index e56698cbbc..8e693903da 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "habitica", - "version": "4.276.0", + "version": "4.277.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 50bc6747e4..693b5af735 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.276.0", + "version": "4.277.0", "main": "./website/server/index.js", "dependencies": { "@babel/core": "^7.22.5", diff --git a/website/client/src/assets/css/sprites/spritesmith-main.css b/website/client/src/assets/css/sprites/spritesmith-main.css index 7b404f21ee..f3cd9bfc28 100644 --- a/website/client/src/assets/css/sprites/spritesmith-main.css +++ b/website/client/src/assets/css/sprites/spritesmith-main.css @@ -68,6 +68,11 @@ width: 68px; height: 68px; } +.achievement-bonelessBoss2x { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/achievement-bonelessBoss2x.png'); + width: 68px; + height: 68px; +} .achievement-boot2x { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/achievement-boot2x.png'); width: 48px; @@ -715,6 +720,11 @@ width: 141px; height: 147px; } +.background_bonsai_collection { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_bonsai_collection.png'); + width: 141px; + height: 147px; +} .background_branches_of_a_holiday_tree { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_branches_of_a_holiday_tree.png'); width: 141px; @@ -920,6 +930,11 @@ width: 141px; height: 147px; } +.background_dreamy_island { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_dreamy_island.png'); + width: 141px; + height: 147px; +} .background_drifting_raft { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_drifting_raft.png'); width: 141px; @@ -1729,6 +1744,11 @@ width: 141px; height: 147px; } +.background_rock_garden { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_rock_garden.png'); + width: 141px; + height: 147px; +} .background_rolling_hills { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_rolling_hills.png'); width: 141px; @@ -2441,6 +2461,11 @@ width: 68px; height: 68px; } +.icon_background_bonsai_collection { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_bonsai_collection.png'); + width: 68px; + height: 68px; +} .icon_background_branches_of_a_holiday_tree { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_branches_of_a_holiday_tree.png'); width: 68px; @@ -2651,6 +2676,11 @@ width: 68px; height: 68px; } +.icon_background_dreamy_island { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_dreamy_island.png'); + width: 68px; + height: 68px; +} .icon_background_drifting_raft { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_drifting_raft.png'); width: 68px; @@ -3460,6 +3490,11 @@ width: 68px; height: 68px; } +.icon_background_rock_garden { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_rock_garden.png'); + width: 68px; + height: 68px; +} .icon_background_rolling_hills { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_rolling_hills.png'); width: 68px; @@ -18435,6 +18470,51 @@ width: 114px; height: 87px; } +.body_armoire_karateBlackBelt { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/body_armoire_karateBlackBelt.png'); + width: 114px; + height: 90px; +} +.body_armoire_karateBlueBelt { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/body_armoire_karateBlueBelt.png'); + width: 114px; + height: 90px; +} +.body_armoire_karateBrownBelt { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/body_armoire_karateBrownBelt.png'); + width: 114px; + height: 90px; +} +.body_armoire_karateGreenBelt { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/body_armoire_karateGreenBelt.png'); + width: 114px; + height: 90px; +} +.body_armoire_karateOrangeBelt { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/body_armoire_karateOrangeBelt.png'); + width: 114px; + height: 90px; +} +.body_armoire_karatePurpleBelt { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/body_armoire_karatePurpleBelt.png'); + width: 114px; + height: 90px; +} +.body_armoire_karateRedBelt { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/body_armoire_karateRedBelt.png'); + width: 114px; + height: 90px; +} +.body_armoire_karateWhiteBelt { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/body_armoire_karateWhiteBelt.png'); + width: 114px; + height: 90px; +} +.body_armoire_karateYellowBelt { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/body_armoire_karateYellowBelt.png'); + width: 114px; + height: 90px; +} .body_armoire_lifeguardWhistle { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/body_armoire_lifeguardWhistle.png'); width: 114px; @@ -18695,6 +18775,11 @@ width: 114px; height: 90px; } +.broad_armor_armoire_karateGi { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_armoire_karateGi.png'); + width: 114px; + height: 90px; +} .broad_armor_armoire_lamplightersGreatcoat { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_armoire_lamplightersGreatcoat.png'); width: 114px; @@ -20000,6 +20085,11 @@ width: 68px; height: 68px; } +.shop_armor_armoire_karateGi { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_armor_armoire_karateGi.png'); + width: 68px; + height: 68px; +} .shop_armor_armoire_lamplightersGreatcoat { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_armor_armoire_lamplightersGreatcoat.png'); width: 68px; @@ -20230,6 +20320,51 @@ width: 68px; height: 68px; } +.shop_body_armoire_karateBlackBelt { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_body_armoire_karateBlackBelt.png'); + width: 68px; + height: 68px; +} +.shop_body_armoire_karateBlueBelt { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_body_armoire_karateBlueBelt.png'); + width: 68px; + height: 68px; +} +.shop_body_armoire_karateBrownBelt { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_body_armoire_karateBrownBelt.png'); + width: 68px; + height: 68px; +} +.shop_body_armoire_karateGreenBelt { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_body_armoire_karateGreenBelt.png'); + width: 68px; + height: 68px; +} +.shop_body_armoire_karateOrangeBelt { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_body_armoire_karateOrangeBelt.png'); + width: 68px; + height: 68px; +} +.shop_body_armoire_karatePurpleBelt { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_body_armoire_karatePurpleBelt.png'); + width: 68px; + height: 68px; +} +.shop_body_armoire_karateRedBelt { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_body_armoire_karateRedBelt.png'); + width: 68px; + height: 68px; +} +.shop_body_armoire_karateWhiteBelt { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_body_armoire_karateWhiteBelt.png'); + width: 68px; + height: 68px; +} +.shop_body_armoire_karateYellowBelt { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_body_armoire_karateYellowBelt.png'); + width: 68px; + height: 68px; +} .shop_body_armoire_lifeguardWhistle { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_body_armoire_lifeguardWhistle.png'); width: 68px; @@ -21785,6 +21920,11 @@ width: 114px; height: 90px; } +.slim_armor_armoire_karateGi { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/slim_armor_armoire_karateGi.png'); + width: 114px; + height: 90px; +} .slim_armor_armoire_lamplightersGreatcoat { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/slim_armor_armoire_lamplightersGreatcoat.png'); width: 114px; @@ -28190,6 +28330,31 @@ width: 117px; height: 120px; } +.eyewear_mystery_202308 { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/eyewear_mystery_202308.png'); + width: 114px; + height: 90px; +} +.head_mystery_202308 { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/head_mystery_202308.png'); + width: 114px; + height: 90px; +} +.shop_eyewear_mystery_202308 { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_eyewear_mystery_202308.png'); + width: 68px; + height: 68px; +} +.shop_head_mystery_202308 { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_head_mystery_202308.png'); + width: 68px; + height: 68px; +} +.shop_set_mystery_202308 { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_set_mystery_202308.png'); + width: 68px; + height: 68px; +} .broad_armor_mystery_301404 { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_mystery_301404.png'); width: 90px; @@ -34204,6 +34369,204 @@ width: 68px; height: 68px; } +.headAccessory_special_bearEars { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/headAccessory_special_bearEars.png'); + width: 90px; + height: 90px; +} +.customize-option.headAccessory_special_bearEars { + background-position: -25px -15px; + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/headAccessory_special_bearEars.png'); + width: 60px; + height: 60px; +} +.headAccessory_special_blackHeadband { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/headAccessory_special_blackHeadband.png'); + width: 114px; + height: 90px; +} +.headAccessory_special_blueHeadband { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/headAccessory_special_blueHeadband.png'); + width: 114px; + height: 90px; +} +.headAccessory_special_cactusEars { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/headAccessory_special_cactusEars.png'); + width: 90px; + height: 90px; +} +.customize-option.headAccessory_special_cactusEars { + background-position: -25px -15px; + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/headAccessory_special_cactusEars.png'); + width: 60px; + height: 60px; +} +.headAccessory_special_foxEars { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/headAccessory_special_foxEars.png'); + width: 90px; + height: 90px; +} +.customize-option.headAccessory_special_foxEars { + background-position: -25px -15px; + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/headAccessory_special_foxEars.png'); + width: 60px; + height: 60px; +} +.headAccessory_special_greenHeadband { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/headAccessory_special_greenHeadband.png'); + width: 114px; + height: 90px; +} +.headAccessory_special_lionEars { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/headAccessory_special_lionEars.png'); + width: 90px; + height: 90px; +} +.customize-option.headAccessory_special_lionEars { + background-position: -25px -15px; + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/headAccessory_special_lionEars.png'); + width: 60px; + height: 60px; +} +.headAccessory_special_pandaEars { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/headAccessory_special_pandaEars.png'); + width: 90px; + height: 90px; +} +.customize-option.headAccessory_special_pandaEars { + background-position: -25px -15px; + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/headAccessory_special_pandaEars.png'); + width: 60px; + height: 60px; +} +.headAccessory_special_pigEars { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/headAccessory_special_pigEars.png'); + width: 90px; + height: 90px; +} +.customize-option.headAccessory_special_pigEars { + background-position: -25px -15px; + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/headAccessory_special_pigEars.png'); + width: 60px; + height: 60px; +} +.headAccessory_special_pinkHeadband { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/headAccessory_special_pinkHeadband.png'); + width: 114px; + height: 90px; +} +.headAccessory_special_redHeadband { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/headAccessory_special_redHeadband.png'); + width: 114px; + height: 90px; +} +.headAccessory_special_tigerEars { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/headAccessory_special_tigerEars.png'); + width: 90px; + height: 90px; +} +.customize-option.headAccessory_special_tigerEars { + background-position: -25px -15px; + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/headAccessory_special_tigerEars.png'); + width: 60px; + height: 60px; +} +.headAccessory_special_whiteHeadband { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/headAccessory_special_whiteHeadband.png'); + width: 114px; + height: 90px; +} +.headAccessory_special_wolfEars { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/headAccessory_special_wolfEars.png'); + width: 90px; + height: 90px; +} +.customize-option.headAccessory_special_wolfEars { + background-position: -25px -15px; + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/headAccessory_special_wolfEars.png'); + width: 60px; + height: 60px; +} +.headAccessory_special_yellowHeadband { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/headAccessory_special_yellowHeadband.png'); + width: 114px; + height: 90px; +} +.shop_headAccessory_special_bearEars { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_headAccessory_special_bearEars.png'); + width: 68px; + height: 68px; +} +.shop_headAccessory_special_blackHeadband { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_headAccessory_special_blackHeadband.png'); + width: 68px; + height: 68px; +} +.shop_headAccessory_special_blueHeadband { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_headAccessory_special_blueHeadband.png'); + width: 68px; + height: 68px; +} +.shop_headAccessory_special_cactusEars { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_headAccessory_special_cactusEars.png'); + width: 68px; + height: 68px; +} +.shop_headAccessory_special_foxEars { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_headAccessory_special_foxEars.png'); + width: 68px; + height: 68px; +} +.shop_headAccessory_special_greenHeadband { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_headAccessory_special_greenHeadband.png'); + width: 68px; + height: 68px; +} +.shop_headAccessory_special_lionEars { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_headAccessory_special_lionEars.png'); + width: 68px; + height: 68px; +} +.shop_headAccessory_special_pandaEars { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_headAccessory_special_pandaEars.png'); + width: 68px; + height: 68px; +} +.shop_headAccessory_special_pigEars { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_headAccessory_special_pigEars.png'); + width: 68px; + height: 68px; +} +.shop_headAccessory_special_pinkHeadband { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_headAccessory_special_pinkHeadband.png'); + width: 68px; + height: 68px; +} +.shop_headAccessory_special_redHeadband { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_headAccessory_special_redHeadband.png'); + width: 68px; + height: 68px; +} +.shop_headAccessory_special_tigerEars { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_headAccessory_special_tigerEars.png'); + width: 68px; + height: 68px; +} +.shop_headAccessory_special_whiteHeadband { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_headAccessory_special_whiteHeadband.png'); + width: 68px; + height: 68px; +} +.shop_headAccessory_special_wolfEars { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_headAccessory_special_wolfEars.png'); + width: 68px; + height: 68px; +} +.shop_headAccessory_special_yellowHeadband { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_headAccessory_special_yellowHeadband.png'); + width: 68px; + height: 68px; +} .head_0 { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/head_0.png'); width: 90px; @@ -34585,204 +34948,6 @@ width: 68px; height: 68px; } -.headAccessory_special_bearEars { - background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/headAccessory_special_bearEars.png'); - width: 90px; - height: 90px; -} -.customize-option.headAccessory_special_bearEars { - background-position: -25px -15px; - background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/headAccessory_special_bearEars.png'); - width: 60px; - height: 60px; -} -.headAccessory_special_blackHeadband { - background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/headAccessory_special_blackHeadband.png'); - width: 114px; - height: 90px; -} -.headAccessory_special_blueHeadband { - background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/headAccessory_special_blueHeadband.png'); - width: 114px; - height: 90px; -} -.headAccessory_special_cactusEars { - background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/headAccessory_special_cactusEars.png'); - width: 90px; - height: 90px; -} -.customize-option.headAccessory_special_cactusEars { - background-position: -25px -15px; - background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/headAccessory_special_cactusEars.png'); - width: 60px; - height: 60px; -} -.headAccessory_special_foxEars { - background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/headAccessory_special_foxEars.png'); - width: 90px; - height: 90px; -} -.customize-option.headAccessory_special_foxEars { - background-position: -25px -15px; - background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/headAccessory_special_foxEars.png'); - width: 60px; - height: 60px; -} -.headAccessory_special_greenHeadband { - background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/headAccessory_special_greenHeadband.png'); - width: 114px; - height: 90px; -} -.headAccessory_special_lionEars { - background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/headAccessory_special_lionEars.png'); - width: 90px; - height: 90px; -} -.customize-option.headAccessory_special_lionEars { - background-position: -25px -15px; - background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/headAccessory_special_lionEars.png'); - width: 60px; - height: 60px; -} -.headAccessory_special_pandaEars { - background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/headAccessory_special_pandaEars.png'); - width: 90px; - height: 90px; -} -.customize-option.headAccessory_special_pandaEars { - background-position: -25px -15px; - background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/headAccessory_special_pandaEars.png'); - width: 60px; - height: 60px; -} -.headAccessory_special_pigEars { - background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/headAccessory_special_pigEars.png'); - width: 90px; - height: 90px; -} -.customize-option.headAccessory_special_pigEars { - background-position: -25px -15px; - background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/headAccessory_special_pigEars.png'); - width: 60px; - height: 60px; -} -.headAccessory_special_pinkHeadband { - background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/headAccessory_special_pinkHeadband.png'); - width: 114px; - height: 90px; -} -.headAccessory_special_redHeadband { - background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/headAccessory_special_redHeadband.png'); - width: 114px; - height: 90px; -} -.headAccessory_special_tigerEars { - background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/headAccessory_special_tigerEars.png'); - width: 90px; - height: 90px; -} -.customize-option.headAccessory_special_tigerEars { - background-position: -25px -15px; - background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/headAccessory_special_tigerEars.png'); - width: 60px; - height: 60px; -} -.headAccessory_special_whiteHeadband { - background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/headAccessory_special_whiteHeadband.png'); - width: 114px; - height: 90px; -} -.headAccessory_special_wolfEars { - background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/headAccessory_special_wolfEars.png'); - width: 90px; - height: 90px; -} -.customize-option.headAccessory_special_wolfEars { - background-position: -25px -15px; - background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/headAccessory_special_wolfEars.png'); - width: 60px; - height: 60px; -} -.headAccessory_special_yellowHeadband { - background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/headAccessory_special_yellowHeadband.png'); - width: 114px; - height: 90px; -} -.shop_headAccessory_special_bearEars { - background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_headAccessory_special_bearEars.png'); - width: 68px; - height: 68px; -} -.shop_headAccessory_special_blackHeadband { - background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_headAccessory_special_blackHeadband.png'); - width: 68px; - height: 68px; -} -.shop_headAccessory_special_blueHeadband { - background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_headAccessory_special_blueHeadband.png'); - width: 68px; - height: 68px; -} -.shop_headAccessory_special_cactusEars { - background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_headAccessory_special_cactusEars.png'); - width: 68px; - height: 68px; -} -.shop_headAccessory_special_foxEars { - background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_headAccessory_special_foxEars.png'); - width: 68px; - height: 68px; -} -.shop_headAccessory_special_greenHeadband { - background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_headAccessory_special_greenHeadband.png'); - width: 68px; - height: 68px; -} -.shop_headAccessory_special_lionEars { - background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_headAccessory_special_lionEars.png'); - width: 68px; - height: 68px; -} -.shop_headAccessory_special_pandaEars { - background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_headAccessory_special_pandaEars.png'); - width: 68px; - height: 68px; -} -.shop_headAccessory_special_pigEars { - background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_headAccessory_special_pigEars.png'); - width: 68px; - height: 68px; -} -.shop_headAccessory_special_pinkHeadband { - background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_headAccessory_special_pinkHeadband.png'); - width: 68px; - height: 68px; -} -.shop_headAccessory_special_redHeadband { - background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_headAccessory_special_redHeadband.png'); - width: 68px; - height: 68px; -} -.shop_headAccessory_special_tigerEars { - background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_headAccessory_special_tigerEars.png'); - width: 68px; - height: 68px; -} -.shop_headAccessory_special_whiteHeadband { - background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_headAccessory_special_whiteHeadband.png'); - width: 68px; - height: 68px; -} -.shop_headAccessory_special_wolfEars { - background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_headAccessory_special_wolfEars.png'); - width: 68px; - height: 68px; -} -.shop_headAccessory_special_yellowHeadband { - background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_headAccessory_special_yellowHeadband.png'); - width: 68px; - height: 68px; -} .shield_healer_1 { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shield_healer_1.png'); width: 90px; @@ -35848,6 +36013,46 @@ width: 20px; height: 24px; } +.notif_namingDay_back { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/notif_namingDay_back.png'); + width: 28px; + height: 28px; +} +.notif_namingDay_body { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/notif_namingDay_body.png'); + width: 28px; + height: 28px; +} +.notif_namingDay_cake { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/notif_namingDay_cake.png'); + width: 28px; + height: 28px; +} +.notif_namingDay_head { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/notif_namingDay_head.png'); + width: 28px; + height: 28px; +} +.notif_namingDay_mount { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/notif_namingDay_mount.png'); + width: 28px; + height: 28px; +} +.notif_namingDay_pet { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/notif_namingDay_pet.png'); + width: 28px; + height: 28px; +} +.notif_orca_mount { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/notif_orca_mount.png'); + width: 28px; + height: 28px; +} +.notif_orca_pet { + background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/notif_orca_pet.png'); + width: 28px; + height: 28px; +} .npc_bailey { background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/npc_bailey.png'); width: 60px; diff --git a/website/client/src/components/groups/lookingForParty.vue b/website/client/src/components/groups/lookingForParty.vue index fd22c7656a..c6db90671b 100644 --- a/website/client/src/components/groups/lookingForParty.vue +++ b/website/client/src/components/groups/lookingForParty.vue @@ -188,6 +188,7 @@ padding: 8px; border-radius: 4px; box-shadow: 0 1px 3px 0 rgba(26, 24, 29, 0.12), 0 1px 2px 0 rgba(26, 24, 29, 0.24); + background-color: $white; &:first-of-type { margin-top: 24px; diff --git a/website/client/src/components/header/notifications/itemReceived.vue b/website/client/src/components/header/notifications/itemReceived.vue index 700f7b47a5..90e97fb549 100644 --- a/website/client/src/components/header/notifications/itemReceived.vue +++ b/website/client/src/components/header/notifications/itemReceived.vue @@ -44,13 +44,13 @@ export default { if (!this.notification || !this.notification.data) { return; } - if (this.notification.data.destination === 'backgrounds') { + if (this.notification.data.destination.indexOf('backgrounds') !== -1) { this.$store.state.avatarEditorOptions.editingUser = true; this.$store.state.avatarEditorOptions.startingPage = 'backgrounds'; this.$store.state.avatarEditorOptions.subpage = '2023'; this.$root.$emit('bv::show::modal', 'avatar-modal'); } else { - this.$router.push({ name: this.notification.data.destination || 'items' }); + this.$router.push(this.notification.data.destination || '/inventory/items'); } }, }, diff --git a/website/client/src/components/userMenu/profile.vue b/website/client/src/components/userMenu/profile.vue index d228a5769b..67fc95b1dd 100644 --- a/website/client/src/components/userMenu/profile.vue +++ b/website/client/src/components/userMenu/profile.vue @@ -1,173 +1,68 @@