diff --git a/src/goals.js b/src/goals.js index 81152d3..5bae6e4 100644 --- a/src/goals.js +++ b/src/goals.js @@ -12,6 +12,10 @@ }) => { const goalMilestoneThresholds = [0.5, 0.75, 0.9]; let announcedGoalMilestones = new Set(); + const logGoalEvent = (event, data = {}) => { + const sceneId = getCurrentScene()?.id || "unknown"; + console.log("[Goals]", event, { sceneId, ...data }); + }; const getGoalState = () => { const scene = getCurrentScene(); @@ -65,7 +69,10 @@ const totalTarget = targets.reduce((sum, t) => sum + t.count, 0); let totalAchieved = 0; const parts = targets.map((t) => { - const achieved = Math.max(0, clearedByColor[normalizeColor(t.color)] || 0); + const achieved = Math.max( + 0, + clearedByColor[normalizeColor(t.color)] || 0, + ); const got = Math.min(t.count, achieved); totalAchieved += got; const remaining = Math.max(0, t.count - got); @@ -104,11 +111,25 @@ if (fraction >= threshold && !announcedGoalMilestones.has(threshold)) { announcedGoalMilestones.add(threshold); const text = config.messages?.text || formatGoalMessage(goal); - if (!text) return; + if (!text) { + logGoalEvent("skip-progress-announcement", { + threshold, + progress: goal.progress, + reason: "missing text", + }); + return; + } const colors = - (Array.isArray(config.messages?.colors) && config.messages.colors) || + (Array.isArray(config.messages?.colors) && + config.messages.colors) || goal?.colors || null; + logGoalEvent("announce-progress", { + threshold, + progress: goal.progress, + colors, + text, + }); ui.showFloatingMessage( { text, colors }, { @@ -131,6 +152,11 @@ (Array.isArray(config.messages?.colors) && config.messages.colors) || goal?.colors || null; + logGoalEvent("goal-intro", { + progress: goal?.progress, + colors, + text, + }); ui.showFloatingMessage( { text, colors }, { @@ -142,6 +168,7 @@ const resetMilestones = () => { announcedGoalMilestones = new Set(); + logGoalEvent("reset-milestones"); }; return { diff --git a/src/main.js b/src/main.js index 75f9faa..16d17e1 100644 --- a/src/main.js +++ b/src/main.js @@ -179,6 +179,7 @@ const applyScene = (sceneId) => { const next = (getSceneById && getSceneById(scenes, sceneId)) || scenes[0]; if (!next) return; + ui.clearMessages(); currentScene = next; ui.setSceneSelection(next.id); setSceneIdInUrl(next.id); diff --git a/src/ui.js b/src/ui.js index 2f835ee..f8e2db7 100644 --- a/src/ui.js +++ b/src/ui.js @@ -234,6 +234,12 @@ const activeMessages = []; + const clearMessages = () => { + if (!floatingMessagesEl) return; + activeMessages.length = 0; + floatingMessagesEl.innerHTML = ""; + }; + const showFloatingMessage = (message, options = {}) => { if (!floatingMessagesEl) return; const msgObj = @@ -285,6 +291,7 @@ setGoal, showFloatingMessage, setMessageDefaults, + clearMessages, }; return api; };