From 73d5529495c7575d5aaa72c90fe6cf8bcc1125d2 Mon Sep 17 00:00:00 2001 From: Till JS Date: Wed, 25 Mar 2026 10:21:44 +0100 Subject: [PATCH] fix(manacore): fix white screen when toggling todo completion in dashboard Task links pointed to non-existent /task/{id} route in Todo app, causing navigation to a 404 page. Replace passive checkbox div with interactive button that toggles completion via API, and fix links to open Todo app root. Co-Authored-By: Claude Opus 4.6 (1M context) --- .../apps/web/src/lib/api/services/todo.ts | 26 +++++++++++++++++++ .../dashboard/widgets/TasksTodayWidget.svelte | 2 +- .../widgets/TasksUpcomingWidget.svelte | 4 ++- 3 files changed, 30 insertions(+), 2 deletions(-) diff --git a/apps/manacore/apps/web/src/lib/api/services/todo.ts b/apps/manacore/apps/web/src/lib/api/services/todo.ts index 814a77b2c..0585e9c58 100644 --- a/apps/manacore/apps/web/src/lib/api/services/todo.ts +++ b/apps/manacore/apps/web/src/lib/api/services/todo.ts @@ -160,6 +160,32 @@ export const todoService = { return { data: result.data.projects || [], error: null }; }, + /** + * Mark a task as complete + */ + async completeTask(id: string): Promise> { + const result = await getClient().post<{ task: Task }>(`/tasks/${id}/complete`); + + if (result.error || !result.data) { + return { data: null, error: result.error }; + } + + return { data: result.data.task, error: null }; + }, + + /** + * Mark a task as incomplete + */ + async uncompleteTask(id: string): Promise> { + const result = await getClient().post<{ task: Task }>(`/tasks/${id}/uncomplete`); + + if (result.error || !result.data) { + return { data: null, error: result.error }; + } + + return { data: result.data.task, error: null }; + }, + /** * Get task count summary */ diff --git a/apps/manacore/apps/web/src/lib/components/dashboard/widgets/TasksTodayWidget.svelte b/apps/manacore/apps/web/src/lib/components/dashboard/widgets/TasksTodayWidget.svelte index 08edf158f..7aaebf7f3 100644 --- a/apps/manacore/apps/web/src/lib/components/dashboard/widgets/TasksTodayWidget.svelte +++ b/apps/manacore/apps/web/src/lib/components/dashboard/widgets/TasksTodayWidget.svelte @@ -78,7 +78,7 @@ const totalCount = $derived((data || []).length); // Track tasks being toggled (for optimistic UI) - let togglingIds = $state>(new Set()); + let togglingIds: Set = $state(new Set()); async function handleToggleComplete(e: MouseEvent, task: Task) { e.preventDefault(); diff --git a/apps/manacore/apps/web/src/lib/components/dashboard/widgets/TasksUpcomingWidget.svelte b/apps/manacore/apps/web/src/lib/components/dashboard/widgets/TasksUpcomingWidget.svelte index 1e09fe4f7..a4bd3b79c 100644 --- a/apps/manacore/apps/web/src/lib/components/dashboard/widgets/TasksUpcomingWidget.svelte +++ b/apps/manacore/apps/web/src/lib/components/dashboard/widgets/TasksUpcomingWidget.svelte @@ -108,7 +108,9 @@
{#each displayedTasks as task}