diff --git a/src/components/gamification/achievement-unlock-notifier.tsx b/src/components/gamification/achievement-unlock-notifier.tsx index 14047598f..4756f9f5f 100644 --- a/src/components/gamification/achievement-unlock-notifier.tsx +++ b/src/components/gamification/achievement-unlock-notifier.tsx @@ -1,7 +1,7 @@ "use client"; import { useQuery } from "@tanstack/react-query"; -import { Trophy } from "lucide-react"; +import { Sparkles, Trophy } from "lucide-react"; import { useEffect, useMemo, useRef } from "react"; import { toast } from "sonner"; import { useTranslations } from "@/lib/i18n/context"; @@ -116,10 +116,22 @@ export function AchievementUnlockNotifier({ } for (const achievement of newlyUnlocked) { - toast(t(achievement.titleKey), { - description: t(achievement.descriptionKey), - icon: , - }); + // v1.4.18 — hidden Easter-eggs get a celebration toast that + // names them "hidden". The real title/description are revealed + // *only* on the unlock toast (and afterwards on the unlocked + // card) so the surprise lands. + if (achievement.isHidden) { + toast(t("achievements.hiddenUnlockToast.title"), { + description: `${t(achievement.titleKey)} — ${t(achievement.descriptionKey)}`, + icon: , + duration: 8000, + }); + } else { + toast(t(achievement.titleKey), { + description: t(achievement.descriptionKey), + icon: , + }); + } seenIdsRef.current.add(achievement.id); }