← All repositories

listless

A simple list app for Apple platforms

git clone https://code.inqk.net/listless.git


commit b56a533c2d4dcc3b519c5c5c5140d43d9e13d69b
parent a5380544b4dde2f6c13902202e05af99cb38611e
Author: Michael Camilleri <[email protected]>
Date:   Thu, 26 Feb 2026 06:39:59 +0900

Fix crash caused by deleted tasks in active/completed task lists

Co-Authored-By: Codex GPT 5.3 <[email protected]>

Diffstat

MListless/Extensions/TaskListView+Logic.swift | 4++--
MListlessMac/Views/TaskListView.swift | 8++++----

2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/Listless/Extensions/TaskListView+Logic.swift b/Listless/Extensions/TaskListView+Logic.swift

@@ -5,7 +5,7 @@ extension TaskListView {
     // MARK: - Computed Properties
 
     var activeTasks: [TaskItem] {
-        Array(tasks.filter { !$0.isCompleted })
+        Array(tasks.filter { !$0.isDeleted && !$0.isCompleted })
             .sorted { $0.sortOrder < $1.sortOrder }
     }
 
@@ -20,7 +20,7 @@ extension TaskListView {
     }
 
     var completedTasks: [TaskItem] {
-        Array(tasks.filter { $0.isCompleted })
+        Array(tasks.filter { !$0.isDeleted && $0.isCompleted })
             .sorted { $0.updatedAt > $1.updatedAt }
     }
 

diff --git a/ListlessMac/Views/TaskListView.swift b/ListlessMac/Views/TaskListView.swift

@@ -223,7 +223,7 @@ struct TaskListView: View {
                     .zIndex(isRowLifted(taskID) ? 1 : 0)
                     .animation(.spring(response: 0.3, dampingFraction: 0.8), value: isRowLifted(taskID))
                     .overlay {
-                        if draggedTaskID != nil && draggedTaskID != task.id {
+                        if draggedTaskID != nil && draggedTaskID != taskID {
                             VStack(spacing: 0) {
                                 // Top 1/6 - insert BEFORE
                                 Color.clear
@@ -232,7 +232,7 @@ struct TaskListView: View {
                                     .onDrop(
                                         of: [UTType.text],
                                         delegate: TaskReorderDropDelegate(
-                                            onTargeted: { updateVisualOrder(insertBefore: task.id) },
+                                            onTargeted: { updateVisualOrder(insertBefore: taskID) },
                                             onPerform: { commitCurrentDrag() }
                                         )
                                     )
@@ -244,7 +244,7 @@ struct TaskListView: View {
                                     .onDrop(
                                         of: [UTType.text],
                                         delegate: TaskReorderDropDelegate(
-                                            onTargeted: { updateVisualOrderSmart(relativeTo: task.id) },
+                                            onTargeted: { updateVisualOrderSmart(relativeTo: taskID) },
                                             onPerform: { commitCurrentDrag() }
                                         )
                                     )
@@ -256,7 +256,7 @@ struct TaskListView: View {
                                     .onDrop(
                                         of: [UTType.text],
                                         delegate: TaskReorderDropDelegate(
-                                            onTargeted: { updateVisualOrder(insertAfter: task.id) },
+                                            onTargeted: { updateVisualOrder(insertAfter: taskID) },
                                             onPerform: { commitCurrentDrag() }
                                         )
                                     )