ISSUES.md: log KC-27–30 and KC-26 tracked-event follow-up

- KC-26: documented the tracked-event auto-advance follow-up (trackedTask).
- KC-27: Today ⋯ menu — Background, Group & Sort, Select.
- KC-28: clearer Snooze labels on notifications and the in-app Postpone menu.
- KC-29: lock-screen Progress Dots legibility.
- KC-30: period milestone notifications (week / month / year).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
kutesir
2026-06-16 02:43:31 +03:00
parent 48e2f4fc10
commit e7e8d07100

View File

@@ -866,7 +866,15 @@ every 12 hours.
(`currentSelectionExpiry`), not 12 hours later, giving the next event a fresh
full pre-render window.
- Completing/closing a task already reloads widget timelines, and the recompute
drops it and picks the next. Tracked-event and manual-pick paths unchanged.
drops it and picks the next.
### Follow-up — tracked events now advance too
The first pass left the **tracked** ("Track Countdown") path pinned: a completed
or expired tracked event stayed on screen. Fixed with `trackedTask(asOf:)`, which
returns the tracked event only while it's live (not complete, and recurring or
still future); once done/past (non-recurring) the widget falls through to the
next-nearest. Recurring tracked events still roll forward, and the refresh
boundary now includes the tracked event's expiry.
Files: `EventCountdownWidget.swift`.
@@ -874,3 +882,101 @@ Files: `EventCountdownWidget.swift`.
1. Queue on + Nearest to finish; let the nearest event's due time pass → widget
rolls to the next-nearest without manual action.
2. Complete the nearest event → widget advances to the next.
3. Track an event, then complete it → widget advances to the next-nearest.
---
## KC-27 — Today ⋯ menu: Background, Group & Sort, Select
**Status:** In Progress (implemented & build-verified, pending device QA)
**Reported by:** User
**Area:** Tasks / Today
### Problem
Three items in the Today ⋯ menu were empty placeholders: Background, Group &
Sort, and Select.
### Fix
- **Background:** sheet with 5 themes (Default/Warm/Cool/Mono/Paper) applied as a
subtle gradient to the Today background; persisted via `@AppStorage`.
- **Group & Sort:** group by Date (default)/Priority/Category/Quadrant and sort by
Smart/Due/Priority/Title. Non-date groupings render as titled sections reusing
`UpcomingSection`.
- **Select:** multi-select sheet with Select All / Deselect All and a bulk action
bar (Complete / Priority / Move / Delete).
- New file `TodayMenuFeatures.swift`; added `TaskViewModel.allActiveRows` so
grouping/selection use the same single-occurrence task set (incl. undated).
Files: `TodayMenuFeatures.swift`, `TodayView.swift`, `TaskItem.swift`.
### How to test
1. ⋯ → Background → pick a theme; Today background updates and persists.
2. ⋯ → Group & Sort → Priority/Category/Quadrant regroups the list.
3. ⋯ → Select → Select All → Complete marks all done.
---
## KC-28 — Clearer Snooze labels on notifications and task menus
**Status:** In Progress (implemented & build-verified, pending device QA)
**Reported by:** User
**Area:** Notifications / Tasks
### Problem
The lock-screen reminder actions and the in-app Postpone submenu showed bare
durations ("15 min", "30 min", …) that didn't say what they do. iOS notification
buttons are a flat list and can't nest, so a single expanding "Snooze" isn't
possible — the labels must carry the meaning.
### Fix
- Lock-screen actions: "Snooze 15 min / 30 min / 1 hour / 2 hours" (+ Mark Complete).
- In-app Postpone submenu: "Snooze 15 Minutes / 30 Minutes / 1 Hour / 2 Hours".
Files: `NotificationManager.swift`, `TaskContextMenu.swift`.
---
## KC-29 — Lock-screen Progress Dots widget legibility
**Status:** In Progress (implemented & build-verified, pending device QA)
**Reported by:** User
**Area:** Widgets
### Problem
The Progress Dots widget in the lock-screen accessoryRectangular family packed
100 tiny dots into a small pill over a custom dark background, which the lock
screen's vibrant rendering washed out — it looked faint / not loaded.
### Fix
- accessoryRectangular: 28 larger dots (vs 100), `.primary` color for the vibrant
tint, and `AccessoryWidgetBackground()` for the standard frosted pill. Home
Screen small/medium/large keep the 100-dot orange-on-dark grid.
Files: `WidgetViews.swift`.
---
## KC-30 — Period milestone notifications (week / month / year)
**Status:** In Progress (implemented & build-verified, pending device QA)
**Reported by:** User
**Area:** Notifications
### Problem
The user wanted recurring "one more period passed" nudges (referencing another
app): end of week, month, and year.
### Fix
- `schedulePeriodMilestones()` schedules three recurring `UNCalendarNotificationTrigger`s:
- This Week — "One more week passed." — Sunday 20:00 (weekly)
- This Month — "One more month passed." — 1st at 09:00 (monthly)
- This Year — "One more year passed." — Jan 1 at 09:00 (yearly)
- Fixed identifiers + remove-then-add keep them de-duplicated; runs via the
existing `reschedule(...)` path when authorized; gated by the
`kisani.periodMilestones` flag (default on). No in-app toggle yet.
Files: `NotificationManager.swift`.
### How to test
1. Authorize notifications; on the 1st of a month at 09:00 a "One more month
passed." notification fires (and equivalents for week/year).