Overdue tasks: timed tasks become overdue when time passes (TickTick behavior) #24

Closed
opened 2026-06-24 18:11:08 +00:00 by kutesir · 0 comments
Owner

Completed

Delivered 2026-06-24

Problem

Timed tasks (hasTime=true) were not moving to overdue until midnight, regardless of their scheduled time. A task at 9 AM would stay in "Today" all day.

Fix (TaskItem.swift)

Two separate comparison paths:

  • hasTime=truedueDate < now (wall clock)
  • hasTime=falsedueDate < startOfDay (midnight boundary)

Both overdueTasks and todayTasks updated for consistency:

var overdueTasks: [TaskItem] {
    let now   = Date()
    let today = Calendar.current.startOfDay(for: now)
    return tasks.filter {
        guard !recurs($0) && !$0.isComplete, let due = $0.dueDate else { return false }
        return $0.hasTime ? due < now : due < today
    }
}

Commit: fix(tasks): timed tasks become overdue immediately when time passes (TickTick behavior)

## Completed ✅ **Delivered 2026-06-24** ### Problem Timed tasks (hasTime=true) were not moving to overdue until midnight, regardless of their scheduled time. A task at 9 AM would stay in "Today" all day. ### Fix (`TaskItem.swift`) Two separate comparison paths: - `hasTime=true` → `dueDate < now` (wall clock) - `hasTime=false` → `dueDate < startOfDay` (midnight boundary) Both `overdueTasks` and `todayTasks` updated for consistency: ```swift var overdueTasks: [TaskItem] { let now = Date() let today = Calendar.current.startOfDay(for: now) return tasks.filter { guard !recurs($0) && !$0.isComplete, let due = $0.dueDate else { return false } return $0.hasTime ? due < now : due < today } } ``` Commit: `fix(tasks): timed tasks become overdue immediately when time passes (TickTick behavior)`
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: kutesir/KisaniCal#24
No description provided.