Skip to content

Commit

Permalink
Merge branch 'develop' into qa/shrimp
Browse files Browse the repository at this point in the history
  • Loading branch information
SabreCat committed Jan 2, 2025
2 parents f6895f3 + 1550d9b commit f9619b8
Show file tree
Hide file tree
Showing 40 changed files with 413 additions and 121 deletions.
2 changes: 1 addition & 1 deletion migrations/users/bulk-email.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ async function updateUser (user) {
[{ name: 'BASE_URL', content: BASE_URL }], // Add variables from template
);

return User.update({ _id: user._id }, { $set: { migration: MIGRATION_NAME } }).exec();
return User.updateOne({ _id: user._id }, { $set: { migration: MIGRATION_NAME } }).exec();
}

export default async function processUsers () {
Expand Down
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "habitica",
"description": "A habit tracker app which treats your goals like a Role Playing Game.",
"version": "5.32.0",
"version": "5.32.2",
"main": "./website/server/index.js",
"dependencies": {
"@babel/core": "^7.22.10",
Expand Down
2 changes: 1 addition & 1 deletion test/api/v3/integration/debug/POST-debug_jumpTime.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ describe('POST /debug/jump-time', () => {
expect(resultDate.getDate()).to.eql(today.getDate());
expect(resultDate.getMonth()).to.eql(today.getMonth());
expect(resultDate.getFullYear()).to.eql(today.getFullYear());
const newResultDate = new Date((await user.post('/debug/jump-time', { offsetDays: 355 })).time);
const newResultDate = new Date((await user.post('/debug/jump-time', { offsetDays: 365 })).time);
expect(newResultDate.getFullYear()).to.eql(today.getFullYear() + 1);
});

Expand Down
6 changes: 6 additions & 0 deletions test/content/schedule.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,12 @@ describe('Content Schedule', () => {
expect(matchers.seasonalGear.end).to.eql(moment.utc(`2025-03-21T${String(switchoverTime).padStart(2, '0')}:00:00.000Z`).toDate());
});

it('sets the end date in new year for a winter gala', () => {
const date = new Date('2025-01-04');
const matchers = getAllScheduleMatchingGroups(date);
expect(matchers.seasonalGear.end).to.eql(moment.utc(`2025-03-21T${String(switchoverTime).padStart(2, '0')}:00:00.000Z`).toDate());
});

it('uses correct date for first hours of the month', () => {
// if the date is checked before CONTENT_SWITCHOVER_TIME_OFFSET,
// it should be considered the previous month
Expand Down
5 changes: 4 additions & 1 deletion website/common/locales/de/backgrounds.json
Original file line number Diff line number Diff line change
Expand Up @@ -888,5 +888,8 @@
"backgroundCastleHallWithHearthNotes": "Entspanne dich in der Wärme einer Schlosshalle mit einer Feuerstelle.",
"backgrounds122024": "SET 127: Veröffentlicht im Dezember 2024",
"backgroundFirstSnowForestText": "Der erste Schnee im Wald",
"backgroundFirstSnowForestNotes": "Tritt in den ersten Schnee im Wald."
"backgroundFirstSnowForestNotes": "Tritt in den ersten Schnee im Wald.",
"backgrounds012025": "Set 128: Veröffentlicht im Januar 2025",
"backgroundWinterLandscapeWithCabinText": "Winterlandschaft mit Hütte",
"backgroundWinterLandscapeWithCabinNotes": "Macht es dir in einer Winterlandschaft mit einer Hütte gemütlich."
}
78 changes: 77 additions & 1 deletion website/common/locales/de/gear.json
Original file line number Diff line number Diff line change
Expand Up @@ -3052,5 +3052,81 @@
"headSpecialSpring2024RogueText": "Nass-Schnee-Kapuze",
"headSpecialSpring2024WarriorNotes": "Was könnte atemberaubender sein, als diese Kristallkrone im Kampf zu tragen? Erhöht Stärke um <%= str %>. Limitierte Ausgabe Frühling 2024 Ausrüstung.",
"headSpecialSpring2024HealerNotes": "Welche fröhlichen Lieder wirst du singen, wenn du diesen Helm trägst? Erhöht Intelligenz um <%= int %>. Limitierte Ausgabe Frühling 2024 Ausrüstung.",
"headSpecialSpring2024RogueNotes": "Welche Wünsche und Hoffnungen werden auftauchen, wenn Eis und Schnee einem fruchtbaren Boden weichen? Erhöht Wahrnehmung um <%= per %>. Limitierte Ausgabe Frühling 2024 Ausrüstung."
"headSpecialSpring2024RogueNotes": "Welche Wünsche und Hoffnungen werden auftauchen, wenn Eis und Schnee einem fruchtbaren Boden weichen? Erhöht Wahrnehmung um <%= per %>. Limitierte Ausgabe Frühling 2024 Ausrüstung.",
"armorArmoireSnowyFluffTrimmedCoatText": "Schneeweißer Flauschmantel",
"armorArmoireSnowyFluffTrimmedCoatNotes": "Wenn die ersten Flocken um dich herum fallen, hält dich dieser Mantel nicht nur warm, sondern sorgt auch dafür, dass du dich perfekt in die verschneite Umgebung einfügst. Gleite mit Stil über das Eis! Erhöht Stärke und Intelligenz um jeweils <%= attrs %>. Verzauberter Schrank: Schneebedeckter Schlappergut-Set (Gegenstand 2 von 2).",
"headSpecialSummer2024HealerNotes": "Diese spiralförmige Muschel erinnert dich daran, nicht durchzudrehen. Erhöht Intelligenz um <%= int %>. Limitierte Ausgabe Sommer 2024 Ausrüstung.",
"headMystery202301Text": "Tapfere Vulpinaohren",
"headSpecialSummer2024MageNotes": "Dieser Hut schwingt sanft in den Meeresströmungen und hilft dir, deine Weisheit zu kanalisieren. Erhöht Wahrnehmung um <%= per %>. Limitierte Ausgabe Sommer 2024 Ausrüstung.",
"headSpecialWinter2025RogueNotes": "Dieser Hut hat definitiv etwas Magisches an sich, denn er verwandelt dich in einen Schneemenschen. Lass den Hasen nur nicht zu nahe an deine Karottennase herankommen. Erhöht Wahrnehmung um <%= per %>. Limitierte Ausgabe Winterausrüstung 2024-2025.",
"headMystery202403Notes": "Du kannst dich glücklich schätzen, diese feine Mütze aus smaragdgrünem Samt mit ihrem feinen meergrünen Edelstein tragen zu können. Gewährt keinen Attributbonus. März 2024 Abonnentengegenstand.",
"headMystery202312Text": "Winterlich Blaues Haar",
"headSpecialSummer2024RogueText": "Nacktschnecken-Helm",
"headMystery202403Text": "Aquamarin-Glückskappe",
"headSpecialSummer2024WarriorText": "Walhai-Helm",
"headSpecialFall2024RogueNotes": "Ob du nun geschmeidig oder gerissen bist, wenn du das trägst, wirst du nicht übersehen! Erhöht Wahrnehmung um <%= per %>. Limitierte Ausgabe Herbstausrüstung 2024.",
"headMystery202312Notes": "Diese ausgefallene Frisur erinnert an die frostigen Farben der Saison. Gewährt keinen Attributbonus. Dezember 2023 Abonnentengegenstand.",
"headSpecialSummer2024RogueNotes": "Dieser Helm mit seinen hornartigen Tentakeln hilft dir, dich zu verstecken, damit du zu deinen eigenen Bedingungen zuschlagen kannst. Erhöht Wahrnehmung um <%= per %>. Limitierte Ausgabe Sommer 2024 Ausrüstung.",
"headSpecialSummer2024WarriorNotes": "Mit diesem hilfreichen Helm lassen sich knifflige Aufgaben in zwei Teile zerlegen. Erhöht Stärke um <%= str %>. Limitierte Ausgabe Sommer 2024 Ausrüstung.",
"headSpecialFall2024HealerNotes": "Ob du deinen Planeten verteidigst oder einen neuen erkundest, wenn du das trägst, wirst du nicht übersehen! Erhöht Intelligenz um <%= int %>. Limitierte Ausgabe Herbstausrüstung 2024.",
"headSpecialWinter2025WarriorText": "Elchkrieger-Helm",
"headSpecialWinter2025WarriorNotes": "Also, hör zu: Jetzt siehst du aus wie ein Elch. Trag dieses Geweih mit Stolz. Erhöht Stärke um <%= str %>. Limitierte Ausgabe Winterausrüstung 2024-2025.",
"headSpecialFall2024RogueText": "Schwarze Katzenmaske",
"headSpecialFall2024HealerText": "Space Invader-Maske",
"headSpecialWinter2025HealerNotes": "Es ist nicht nötig, sie zu entwirren, da sie bereits die Form eines Hutes haben. Erhöht Intelligenz um <%= int %>. Limitierte Ausgabe Winterausrüstung 2024-2025.",
"headSpecialWinter2025MageText": "Aurorahut",
"headSpecialWinter2025MageNotes": "Dieser Hut ist mehr als nur ein schicker Fascinator, er lässt dich wie das Polarlicht selbst aussehen. Erhöht Wahrnehmung um <%= per %>. Limitierte Ausgabe Winterausrüstung 2024-2025.",
"headSpecialSummer2024MageText": "Seeanemonen-Hut",
"headSpecialSummer2024HealerText": "Seeschneckenhaus",
"headSpecialFall2024WarriorText": "Feurige Koboldmaske",
"headSpecialFall2024WarriorNotes": "Egal, ob du schelmisch oder bedrohlich bist, wenn du das trägst, wirst du nicht übersehen! Erhöht Stärke um <%= str %>. Limitierte Ausgabe Herbstausrüstung 2024.",
"headSpecialWinter2025RogueText": "Schneemaske",
"headSpecialWinter2025HealerText": "Lichterketten-Wirrwarr",
"headMystery202402Notes": "Diese hübsche rosa Mähne ist das perfekte Accessoire für den Februar und darüber hinaus. Gewährt keinen Attributbonus. Februar 2024 Abonnentengegenstand.",
"headMystery202402Text": "Paradiesisches Rosa Haar",
"headMystery202301Notes": "Dein Gehör wird so scharf sein, dass du das Hereinbrechen des Morgens und das Glitzern des Taus hören wirst. Gewährt keinen Attributbonus. Jänner 2023 Abonnentengegenstand.",
"headMystery202304Text": "Tiptop Teekannen-Deckel",
"headMystery202304Notes": "Dieser Helm gewährt dir Immuni-Tee-t. April 2023 Abonnentengegenstand.",
"headMystery202310Text": "Narrenkappe",
"headMystery202311Text": "Zauberweberhut",
"headMystery202311Notes": "Verwebe sogar Raum und Zeit mit deinem Willen. Gewährt keinen Attributbonus. November 2023 Abonnentengegenstand.",
"headMystery202310Notes": "Sie verbirgt dein Gesicht und verleiht deinen Augen dennoch einen beunruhigenden und gespenstischen Glanz. Gewährt keinen Attributbonus. Oktober 2023 Abonnentengegenstand.",
"headMystery202303Text": "Künstlermähnen-Haar",
"headMystery202303Notes": "Wie könnte man besser zeigen, dass man der Star dieser Geschichte ist, als mit blauem und unwahrscheinlich stacheligem Haar? Gewährt keinen Attributbonus. März 2023 Abonnentengegenstand.",
"headMystery202308Text": "Lila Protagonistenhaar",
"headMystery202308Notes": "Steht die widerspenstige Kutte, die aus der Mitte deines Kopfes ragt, für deine Hartnäckigkeit oder deinen Hang zum Unfug? Gewährt keinen Attributbonus. August 2023 Abonnentengegenstand.",
"headMystery202407Notes": "Mit diesen magischen Kiemen kannst du unter Wasser atmen! Gewährt keinen Attributbonus. Juli 2024 Abonnentengegenstand.",
"headMystery202411Notes": "Dieser Helm ist für deine Aufgaben ziemlich einschüchternd, wenn du dich kopfüber in die Arbeit stürzt! Gewährt keinen Attributbonus. November 2024 Abonnentengegenstand.",
"headMystery202501Notes": "Dieser glitzernde Hut erzeugt ständig ein leichtes und festliches Gewusel um dich herum. Gewährt keinen Attributbonus. Jänner 2025 Abonnentengegenstand.",
"headArmoireBeaniePropellerHatText": "Propeller-Beaniemütze",
"headMystery202409Text": "Sonnwend-Magierhut",
"headMystery202409Notes": "Die verzauberten Sonnenblumen auf diesem Hut sind mehr als nur eine fröhliche Dekoration, sie erfüllen den Träger mit mächtiger magischer Energie. Gewährt keinen Attributbonus. September 2024 Abonnentengegenstand.",
"headMystery202407Text": "Sympathische Axolotl-Haube",
"headMystery202411Text": "Borstenhelm",
"headMystery202412Text": "Zuckerstangen-Kaninchenhaube",
"headMystery202412Notes": "Warm und gemütlich, wie eine Tasse heißer Kakao mit Minze in einer Winternacht! Gewährt keinen Attributbonus. Dezember 2024 Abonnentengegenstand.",
"headMystery202501Text": "Frostbinder-Hut",
"headMystery202406Notes": "Die geisterhaften Federn, die diesen Hut zieren, leuchten schwach, wie die Wellen eines gespenstischen Meeres. Gewährt keinen Attributbonus. Juni 2024 Abonnentengegenstand.",
"headArmoireTeaHatText": "Teepartyhut",
"headArmoirePaintersBeretText": "Malermütze",
"headArmoireAdmiralsBicorneText": "Admirals-Zweispitz",
"headArmoireAdmiralsBicorneNotes": "Hut ab! Wenn du diesen Zweispitz trägst, wirst du weiser, klüger, mutiger... und größer sein. Erhöht Intelligenz und Wahrnehmung um jeweils <%= attrs %>. Verzauberter Schrank: Admiralsset (Gegenstand 1 von 2).",
"headArmoireBeaniePropellerHatNotes": "Jetzt ist nicht die Zeit, um am Boden zu bleiben! Drehe diesen kleinen Propeller und erhebe dich so hoch, wie dein Ehrgeiz dich tragen wird. Erhöht alle Eigenschaften um <%= attrs %>. Verzauberter Schrank: Unabhängiger Gegenstand.",
"headArmoirePaintersBeretNotes": "Mit dieser flotten Baskenmütze siehst du die Welt mit einem künstlerischen Auge. Erhöht Wahrnehmung um <%= per %>. Verzauberter Schrank: Malerset (Gegenstand 2 von 4).",
"headArmoireTeaHatNotes": "Dieser elegante Hut ist so schick wie funktional. Erhöht Wahrnehmung um <%= per %>. Verzauberter Schrank: Teepartyset (Gegenstand 2 von 3).",
"headArmoirePurpleSpookySorceryHatText": "Gespenstischer Lila Magierhut",
"headArmoirePurpleSpookySorceryHatNotes": "Purpurrot wie die Dämmerung und voller Geheimnisse, ist dieser Hut für all deine zauberhaften Bedürfnisse geeignet. Erhöht Wahrnehmung um <%= per %> und Ausdauer um <%= con %>. Verzauberter Schrank: Gespenstisches Magie-Set (Gegenstand 2 von 3).",
"headArmoireBlackSpookySorceryHatText": "Gespenstischer Schwarzer Magierhut",
"headArmoireBlackSpookySorceryHatNotes": "Schwarz wie die Nacht und voller Geheimnisse, ist dieser Hut für all deine zauberhaften Bedürfnisse geeignet. Erhöht Intelligenz um <%= per %> und Ausdauer um <%= con %>. Verzauberter Schrank: Gespenstisches Magie-Set (Gegenstand 3 von 3).",
"headArmoireDragonKnightsHelmText": "Drachenritterhelm",
"headArmoireCorsairsBandanaText": "Piratenbandana",
"headArmoireFunnyFoolCapText": "Lustige Narrenkappe",
"headArmoireWhiteFloppyHatNotes": "Viele Zaubersprüche wurden in diesen einfachen Hut eingenäht und verleihen ihm eine wundersame weiße Farbe. Erhöht Stärke, Intelligenz und Ausdauer um jeweils <%= attrs %>. Verzauberter Schrank: Weißes Loungewear -Set (Gegenstand 1 von 3).",
"headArmoireCorsairsBandanaNotes": "Egal, ob du deinen Kopf bedecken willst, falls eine Möwe über dich hinwegfliegt, oder ob du sicherstellen willst, dass deine Feinde dich nicht schwitzen sehen, dieses Tuch ist unverzichtbar. Füge einfach eine Zierperle für jedes Abenteuer hinzu, das du bestehst. Erhöht Intelligenz um <%= int %>. Verzauberter Schrank: Korsaren-Set (Gegenstand 2 von 3)",
"headArmoireFunnyFoolCapNotes": "Die Glöckchen an diesem Hut könnten deine Gegner zum Kichern bringen, aber dir helfen sie nur, dich zu konzentrieren. Erhöht Ausdauer um <%= con %>. Verzauberter Schrank: Lustiges Narren-Set (Gegenstand 1 von 3)",
"headArmoireDragonKnightsHelmNotes": "Mit den feurigen Elementen auf diesem Helm könnten Drachen dich für einen der ihren halten. Erhöht Intelligenz um <%= int %>. Verzauberter Schrank: Drachenritter-Set (Gegenstand 1 von 3)",
"headArmoireStormKnightHelmText": "Sturmritterhelm",
"headArmoireGreenTrapperHatText": "Grüne Trappermütze",
"headArmoireGreenTrapperHatNotes": "Alle sagen, dass deine Mütze so warm aussieht! Und das ist sie tatsächlich. Achte nur darauf, dass du die Klappen von deinen Ohren ziehst, wenn die Leute mit dir reden, sonst hört sich das Ganze eher nach „dne ütze sht ss wrrm ss!“ an. Erhöht Ausdauer und Wahrnehmung um jeweils <%= attrs %> . Verzauberter Schrank: Trappermützen-Set (Gegenstand 1 von 2).",
"headArmoireStormKnightHelmNotes": "Nutze die Blitze dieses Geweihs, wenn du die Burg stürmst. Erhöht Ausdauer um <%= con %>. Verzauberter Schrank: Sturmritter-Set (Gegenstand 1 von 3)"
}
3 changes: 2 additions & 1 deletion website/common/locales/de/npc.json
Original file line number Diff line number Diff line change
Expand Up @@ -131,5 +131,6 @@
"groupsPaymentAutoRenew": "Dieses Abonnement läuft automatisch weiter, bis es gekündigt wird. Du kannst es im Gruppen-Abrechnungs-Tab kündigen.",
"sellItems": "Items verkaufen",
"customizationsShopText": "Willst du deinen Style ändern? Hier bist du richtig! Wir haben die frischesten Looks, passend zur Saison, auf Lager.",
"notAvailable": "Dieser Gegenstand ist nicht verfügbar."
"notAvailable": "Dieser Gegenstand ist nicht verfügbar.",
"paymentYouSentSubscriptionG1G1": "Du hast <strong><%- name %></strong><br> ein <%= months %>-Monat(e)-Abo für Habitica geschickt und dasselbe Abo wurde deinem Account im Zuge der \"Schenk' Eins, Bekomm' Eins\"-Aktion gutgeschrieben!"
}
3 changes: 2 additions & 1 deletion website/common/locales/de/subscriber.json
Original file line number Diff line number Diff line change
Expand Up @@ -258,5 +258,6 @@
"subscriptionChangeAnnouncement": "<strong>Abonnementvorteile und die Art und Weise, wie sie ausgeschüttet werden, ändert sich am 19. November. </strong> <%= linkStart %>Klicke hier</a>, um mehr über diese Änderung zu lesen.",
"earn2Gems": "Verdiene <strong>+2 Edelsteine</strong> für jeden Monat, in dem du abonniert hast",
"subscribeAgainContinueHourglasses": "Erneuere Dein Abonnement, um weiterhin Mystische Sanduhren zu erhalten",
"mysterySet202411": "Borstenkämpfer Set"
"mysterySet202411": "Borstenkämpfer Set",
"mysterySet202501": "Frostbinder-Set"
}
5 changes: 4 additions & 1 deletion website/common/locales/fr/backgrounds.json
Original file line number Diff line number Diff line change
Expand Up @@ -888,5 +888,8 @@
"backgroundCastleHallWithHearthNotes": "Prélassez-vous dans la chaleur de l'Âtre du le Hall du Château.",
"backgroundFirstSnowForestText": "Première Neige dans la Forêt",
"backgroundFirstSnowForestNotes": "Avancez sous la Première Neige dans la Forêt.",
"backgrounds122024": "Ensemble 127 : sorti en décembre 2024"
"backgrounds122024": "Ensemble 127 : sorti en décembre 2024",
"backgroundWinterLandscapeWithCabinText": "Chalet dans un Paysage Hivernal",
"backgrounds012025": "Ensemble 128 : Sorti Janvier 2025",
"backgroundWinterLandscapeWithCabinNotes": "Profitez du confort de ce Chalet dans un Paysage Hivernal."
}
10 changes: 9 additions & 1 deletion website/common/locales/fr/gear.json
Original file line number Diff line number Diff line change
Expand Up @@ -3245,5 +3245,13 @@
"headSpecialWinter2025RogueNotes": "Il y a clairement de la magie dans ce couvre-chef, parce qu'il vous transforme en bon·homme·ne femme de neige. Ne laissez pas les lapins s'approcher de votre nez en carotte. Augmente la Perception de <%= per %>. Équipement Édition Limitée Hiver 2024-2025.",
"armorArmoireFestiveHelperOverallsText": "Salopette de l'Assistant·e des Fêtes",
"armorArmoireFestiveHelperOverallsNotes": "Durable et confortable, cette salopette est idéale pour travailler, jouer, et aider les autres. Et en plus, elle a des poches ! Augmente la Constitution de <%= con %>. Armoire Enchantée : Ensemble Assistant·e des Fêtes (Objet 2 sur 2)",
"weaponSpecialWinter2025MageNotes": "Cet époustouflant et coloré spectacle constitue la toile de fond idéale ! Vous serez inarrêtable ! Augmente l'intelligence de <%= int %> et la perception de <%= per %>. Édition Limitée Équipement Hiver 2023-2024."
"weaponSpecialWinter2025MageNotes": "Cet époustouflant et coloré spectacle constitue la toile de fond idéale ! Vous serez inarrêtable ! Augmente l'intelligence de <%= int %> et la perception de <%= per %>. Édition Limitée Équipement Hiver 2023-2024.",
"armorArmoireSnowyFluffTrimmedCoatNotes": "Alors que les premiers flocons tomberont autour de vous, ce matin va non seulement vous garder au chaud, mais vous permettra également de vous fondre dans les décors enneigés. Glissez sur la glace avec classe ! Augmente la Force et l'Intelligence de <%= attrs %> chacune. Armoire Enchantée : Ensemble Chapeau de Trappeu·r·se des Neiges (Objet 2 sur 2).",
"headArmoireSnowyTrapperHatNotes": "Les oreilles bleues et pleine d'engelures feront partie du passé. Profitez du chaud confortablement et avec classe ! Augmente la Constitution et la Perception de <%= attrs %> chacune. Armoire Enchantée : Ensemble Chapeau de Trappeu·r·se des Neiges (Objet 1 sur 2).",
"armorArmoireSnowyFluffTrimmedCoatText": "Manteau de Fourrure des Neiges",
"headMystery202501Text": "Chapeau de l'Envoûteu·r·se de Glace",
"headMystery202501Notes": "Ce chapeau scintillant génère de la lumière et des flocons festifs autour de vous en tout temps. Ne confère aucun bonus. Équipement d'Abonnement Janvier 2025.",
"headArmoireSnowyTrapperHatText": "Chapeau de Trappeu·r·se des Neiges",
"shieldMystery202501Text": "Bâton de l'Envoûteu·r·se de Glace",
"shieldMystery202501Notes": "Décorez n'importe quel paysage avec un manteau diamanté de gel scintillant. Ne confère aucun bonus. Équipement d'Abonnement Janvier 2025."
}
Loading

0 comments on commit f9619b8

Please sign in to comment.