From c29720e1459b67ea974aef24724733c301ee57ca Mon Sep 17 00:00:00 2001 From: Jake Date: Fri, 24 Apr 2026 20:49:41 +0100 Subject: [PATCH] feat(gamification): emit task-uncompleted + task-deleted events Phase 8 completionStats store listens on these events to refresh the daily count. Keeps the badge + sparkline accurate after un-tick / delete paths, which don't currently fire kon:task-completed. Co-Authored-By: Claude Opus 4.7 (1M context) --- src/lib/stores/page.svelte.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/lib/stores/page.svelte.ts b/src/lib/stores/page.svelte.ts index 6196318..eed0e31 100644 --- a/src/lib/stores/page.svelte.ts +++ b/src/lib/stores/page.svelte.ts @@ -445,6 +445,9 @@ export async function deleteTask(id: string) { if (idx >= 0) { tasks.splice(idx, 1); broadcastTasks(); + if (typeof window !== "undefined") { + window.dispatchEvent(new CustomEvent("kon:task-deleted", { detail: { id } })); + } } } catch (err) { toasts.error("Couldn't delete task", errorMessage(err)); @@ -474,6 +477,9 @@ export async function uncompleteTask(id: string) { try { await invoke("uncomplete_task_cmd", { id }); applyLocalTaskUpdate(id, { done: false, doneAt: null }); + if (typeof window !== "undefined") { + window.dispatchEvent(new CustomEvent("kon:task-uncompleted", { detail: { id } })); + } } catch (err) { toasts.error("Couldn't uncomplete task", errorMessage(err)); }