From 1ee05ea8624d47a220e67aded3265968528801bc Mon Sep 17 00:00:00 2001 From: Solomon Date: Tue, 9 Dec 2025 10:54:21 +0000 Subject: [PATCH] normalize cursor todo items (#1473) --- crates/executors/src/executors/cursor.rs | 12 +++++++++++- frontend/src/components/tasks/TodoPanel.tsx | 8 +++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/crates/executors/src/executors/cursor.rs b/crates/executors/src/executors/cursor.rs index cf61259f..57c8cc7c 100644 --- a/crates/executors/src/executors/cursor.rs +++ b/crates/executors/src/executors/cursor.rs @@ -872,7 +872,7 @@ impl CursorToolCall { .iter() .map(|t| TodoItem { content: t.content.clone(), - status: t.status.clone(), + status: normalize_todo_status(&t.status), priority: None, // CursorTodoItem doesn't have priority field }) .collect() @@ -921,6 +921,16 @@ impl CursorToolCall { } } +fn normalize_todo_status(status: &str) -> String { + match status.to_lowercase().as_str() { + "todo_status_pending" => "pending".to_string(), + "todo_status_in_progress" => "in_progress".to_string(), + "todo_status_completed" => "completed".to_string(), + "todo_status_cancelled" => "cancelled".to_string(), + other => other.to_string(), + } +} + /* =========================== Typed tool results for Cursor =========================== */ diff --git a/frontend/src/components/tasks/TodoPanel.tsx b/frontend/src/components/tasks/TodoPanel.tsx index 001dccc5..a6ed5b85 100644 --- a/frontend/src/components/tasks/TodoPanel.tsx +++ b/frontend/src/components/tasks/TodoPanel.tsx @@ -13,6 +13,8 @@ function getStatusIcon(status?: string) { return ; if (s === 'in_progress' || s === 'in-progress') return ; + if (s === 'cancelled') + return ; return ; } @@ -57,7 +59,11 @@ function TodoPanel() { {getStatusIcon(todo.status)} - {todo.content} + {todo.status?.toLowerCase() === 'cancelled' ? ( + {todo.content} + ) : ( + todo.content + )} ))}