diff --git a/KisaniCal/Models/TaskItem.swift b/KisaniCal/Models/TaskItem.swift index 3a13603..4fa208b 100644 --- a/KisaniCal/Models/TaskItem.swift +++ b/KisaniCal/Models/TaskItem.swift @@ -152,6 +152,22 @@ class TaskViewModel: ObservableObject { } else { tasks = [] } + migrateCategoryPrioritiesIfNeeded() + } + + /// One-time backfill: tasks created before Priority existed all have `.none`. + /// Apply the KisaniCal category defaults (birthdays → High, etc.) so the Matrix + /// places legacy birthdays/renewals in the top row like newly-created ones. + private func migrateCategoryPrioritiesIfNeeded() { + let flag = "kisani.migration.categoryPriority.v1" + guard !UserDefaults.kisani.bool(forKey: flag) else { return } + var changed = false + for idx in tasks.indices where tasks[idx].priority == .none { + let def = defaultPriority(category: tasks[idx].category, title: tasks[idx].title) + if def != .none { tasks[idx].priority = def; changed = true } + } + UserDefaults.kisani.set(true, forKey: flag) + if changed { save() } } func reload() {