diff --git a/KisaniCal/ISSUES.md b/KisaniCal/ISSUES.md index 3f81b04..0956653 100644 --- a/KisaniCal/ISSUES.md +++ b/KisaniCal/ISSUES.md @@ -90,4 +90,53 @@ Two changes to the Today view: Files: `KisaniCal/Views/TodayView.swift` ### Verification -Builds cleanly. Committed in `f66f032`. +Builds cleanly. Committed in `f66f032` (re-authored `a92e9d4`). + +--- + +## KC-4 — Unified task context menu + Live Activity + calendar event actions + +**Status:** In Progress (implemented & build-verified; Live Activity pending on-device test) +**Reported by:** User +**Area:** Tasks / Calendar / Widgets + +### Description +Long-pressing a task (in any task list) should show a consistent menu: +Pin · Date · Move · Priority · Tags · Add to Live Activity · Delete — and the +actions must actually work. Long-pressing a non-subscription calendar event +should offer Edit / Delete only. + +### Fix +- New shared `TaskMenuItems` (KisaniCal/Views/TaskContextMenu.swift) used by the + Today timeline, Matrix (grid + Overdue/Later/Completed lists), and Calendar + day timeline. Added `TaskViewModel.setPriority`. +- Live Activity (ActivityKit): `TaskActivityAttributes` (shared app+widget), + `LiveActivityManager` (start/update/end/toggle, iOS 16.1+), `TaskLiveActivity` + widget (lock screen + Dynamic Island), `NSSupportsLiveActivities` via project.yml. +- Calendar events (non-subscription, writable only): Edit opens the system + `EKEventEditViewController` (`EventEditView`); Delete via `CalendarStore.deleteEvent`. + +Files: `TaskContextMenu.swift`, `TaskActivityAttributes.swift`, +`LiveActivityManager.swift`, `TaskLiveActivity.swift`, `TaskItem.swift`, +`MatrixView.swift`, `CalendarView.swift`, `TodayView.swift`, +`KisaniCalWidgets.swift`, `project.yml`. Committed in `d0d982f`. + +### How to test +1. **Menu parity** — long-press a task in Today, in a Matrix quadrant, in a + Matrix list (Overdue/Later), and in the Calendar day view. All show the same + 7 items. +2. **Each action** — Pin (row pins), Date → Today/Tomorrow/Next Week/Remove + (due date changes), Move (task changes quadrant), Priority (flag changes), + Tags (category changes), Delete (removed). +3. **Live Activity** — tap "Add to Live Activity" → a banner appears on the Lock + Screen / Dynamic Island with the task title + countdown; tap again to end. + **Requires a real iOS 16.1+ device** (not visible in the Simulator). +4. **Calendar events** — long-press a personal (writable) event → Edit opens the + system editor; Delete removes it. A subscribed/RSS event (F1, TV) shows **no** + menu. + +### Known limitations +- Live Activity visuals only render on a physical device; the design is a first + pass (orange accent + timer) and can be refined. +- Uses the iOS 16.1 `Activity.request(...contentState:...)` API (deprecation + warning on 16.2+, still functional).