From c5cd9fe0515f024a6f442e6b7eca614a38aa6deb Mon Sep 17 00:00:00 2001 From: soryu Date: Thu, 22 Jan 2026 13:16:01 +0000 Subject: Add dismiss functionality for completed standalone tasks ## Changes ### Backend - Add 'hidden' field to Task model (models.rs) - Add database migration for hidden column (20250122000000_add_task_hidden.sql) - Update task listing queries to include hidden field and filter out hidden tasks - Update update_task_for_owner to handle hidden field ### Frontend - Add hidden field to TaskSummary interface (api.ts) - Add dismissTask API function (api.ts) - Add hideTask function to useTasks hook - Add Dismiss button to TaskList for completed standalone tasks - Wire up onDismiss handler in mesh.tsx route ## Behavior - Completed standalone tasks (tasks without a contract) show a "Dismiss" button - Dismissing a task sets hidden=true and removes it from the task list - Hidden tasks are filtered out by default in all task listing queries Co-Authored-By: Claude Opus 4.5 --- makima/src/db/models.rs | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'makima/src/db/models.rs') diff --git a/makima/src/db/models.rs b/makima/src/db/models.rs index bf95a3a..6ede268 100644 --- a/makima/src/db/models.rs +++ b/makima/src/db/models.rs @@ -525,6 +525,12 @@ pub struct Task { /// Used to track the origin of "what if" explorations. #[serde(skip_serializing_if = "Option::is_none")] pub branched_from_task_id: Option, + + // UI visibility + /// Whether this task is hidden from the UI (user dismissed it). + /// Standalone completed tasks can be dismissed by the user. + #[serde(default)] + pub hidden: bool, } impl Task { @@ -564,6 +570,9 @@ pub struct TaskSummary { /// True for contract supervisor tasks #[serde(default)] pub is_supervisor: bool, + /// Whether this task is hidden from the UI (user dismissed it) + #[serde(default)] + pub hidden: bool, pub created_at: DateTime, pub updated_at: DateTime, } @@ -586,6 +595,7 @@ impl From for TaskSummary { subtask_count: 0, // Would need separate query version: task.version, is_supervisor: task.is_supervisor, + hidden: task.hidden, created_at: task.created_at, updated_at: task.updated_at, } @@ -670,6 +680,8 @@ pub struct UpdateTaskRequest { /// Explicitly clear daemon_id (set to NULL) #[serde(default)] pub clear_daemon_id: bool, + /// Whether this task is hidden from the UI (user dismissed it) + pub hidden: Option, /// Version for optimistic locking pub version: Option, } -- cgit v1.2.3