From e7e8d071009e6bd712014b1c247249e9af2bb12a Mon Sep 17 00:00:00 2001 From: kutesir Date: Tue, 16 Jun 2026 02:43:31 +0300 Subject: [PATCH] =?UTF-8?q?ISSUES.md:=20log=20KC-27=E2=80=9330=20and=20KC-?= =?UTF-8?q?26=20tracked-event=20follow-up?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 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 --- KisaniCal/ISSUES.md | 108 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 107 insertions(+), 1 deletion(-) diff --git a/KisaniCal/ISSUES.md b/KisaniCal/ISSUES.md index 3c68877..e93ba82 100644 --- a/KisaniCal/ISSUES.md +++ b/KisaniCal/ISSUES.md @@ -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).