diff --git a/KisaniCal/ISSUES.md b/KisaniCal/ISSUES.md index 17b8eec..0d2aeee 100644 --- a/KisaniCal/ISSUES.md +++ b/KisaniCal/ISSUES.md @@ -2165,3 +2165,14 @@ imbalance confirmed via `git stash` to predate this change — a comment artifact, not introduced here). `TagChip` itself is left intact in `SharedComponents.swift` since it's a generic shared component, just no longer called from these two sites. + +### Follow-up — right side was dead space +Device screenshot of the "Later" list showed the icon column sitting empty +for most rows (default `.reminder` tasks have no glyph, no alarm, no +series), leaving a lone floating repeat icon on recurring rows and a big +gap everywhere else. Rebalanced `TaskRowView`: the countdown (`in 1 wk` +etc., previously crammed under the title on the left) moved to a trailing +`VStack` on the right, with the icon row underneath it — so the row now +reads title/date on the left, countdown/indicators on the right, instead of +all metadata piled on the left and the right column empty. `TodayTLRow` was +left as-is (its leading time-track column already fills that role there). diff --git a/KisaniCal/Views/TodayView.swift b/KisaniCal/Views/TodayView.swift index 90b7961..4a65283 100644 --- a/KisaniCal/Views/TodayView.swift +++ b/KisaniCal/Views/TodayView.swift @@ -1355,38 +1355,39 @@ struct TaskRowView: View { .font(AppFonts.sans(13)) .foregroundColor(AppColors.text(cs)) if let d = task.dueDate, showDetails { - HStack(spacing: 4) { - Text("\(dueFmt.string(from: d))\(task.isRecurring ? " · \(task.recurrenceLabel ?? "Repeat")" : "")") - .font(AppFonts.mono(9.5)) - .foregroundColor(AppColors.text3(cs)) - Text("·") - .font(AppFonts.mono(9.5)) - .foregroundColor(AppColors.text3(cs).opacity(0.4)) - Text(countdownLabel(to: d)) - .font(AppFonts.mono(9.5, weight: .semibold)) - .foregroundColor(countdownColor(to: d)) - } + Text("\(dueFmt.string(from: d))\(task.isRecurring ? " · \(task.recurrenceLabel ?? "Repeat")" : "")") + .font(AppFonts.mono(9.5)) + .foregroundColor(AppColors.text3(cs)) } } - Spacer() + Spacer(minLength: 8) - // ⏰ reminder · 🔁 recurring · tag icon indicators (TickTick-style — icon only, no text badge) - HStack(spacing: 5) { - if let glyph = task.category.glyph { - Image(systemName: glyph) - .font(.system(size: 11)) - .foregroundColor(task.quadrant.color) + // Right column mirrors the left: countdown metadata on top, + // icon-only category/reminder/series indicators below — fills + // what used to be dead space instead of a lone floating icon. + VStack(alignment: .trailing, spacing: 3) { + if let d = task.dueDate, showDetails { + Text(countdownLabel(to: d)) + .font(AppFonts.mono(9.5, weight: .semibold)) + .foregroundColor(countdownColor(to: d)) } - if task.reminderDate != nil || task.constantReminder { - Image(systemName: "alarm") - .font(.system(size: 11)) - .foregroundColor(AppColors.text3(cs)) - } - if task.isRecurring { - Image(systemName: "repeat") - .font(.system(size: 11)) - .foregroundColor(AppColors.text3(cs)) + HStack(spacing: 5) { + if let glyph = task.category.glyph { + Image(systemName: glyph) + .font(.system(size: 10.5)) + .foregroundColor(task.quadrant.color) + } + if task.reminderDate != nil || task.constantReminder { + Image(systemName: "alarm") + .font(.system(size: 10.5)) + .foregroundColor(AppColors.text3(cs)) + } + if task.isRecurring { + Image(systemName: "repeat") + .font(.system(size: 10.5)) + .foregroundColor(AppColors.text3(cs)) + } } } .padding(.trailing, 9)