tasks: typography polish on task rows, no size changes (KC-62 follow-up 2)

Title weight bumped to medium for hierarchy, tracking added to the
mono date/countdown lines for legibility at small size, slightly
looser line spacing. Impeccable's detect engine only parses HTML, not
Swift, so this was done by hand rather than via the skill.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
kutesir
2026-07-09 14:38:34 +03:00
committed by kutesir
parent 92a533a930
commit 172bb011ff
2 changed files with 16 additions and 3 deletions

View File

@@ -2176,3 +2176,14 @@ etc., previously crammed under the title on the left) moved to a trailing
reads title/date on the left, countdown/indicators on the right, instead of 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 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). left as-is (its leading time-track column already fills that role there).
### Follow-up 2 — typography polish
User asked for the row text to be "easy on the eye" without increasing any
font sizes. Impeccable was considered but is a no-op here (its `detect`
engine only parses HTML, not Swift/SwiftUI — confirmed limitation from the
F1 Pitt project setup). Applied by hand instead, sizes unchanged: title
bumped from `.regular` to `.medium` weight for stronger hierarchy against
the dimmer date/countdown line; both mono metadata lines (date and
countdown) got `.tracking(0.2)` for legibility at 9.5pt; column spacing
loosened slightly (2→3 left, 3→4 right) for breathing room between the two
lines.

View File

@@ -1350,13 +1350,14 @@ struct TaskRowView: View {
} }
.buttonStyle(PressButtonStyle(scale: 0.82)) .buttonStyle(PressButtonStyle(scale: 0.82))
VStack(alignment: .leading, spacing: 2) { VStack(alignment: .leading, spacing: 3) {
Text(task.title) Text(task.title)
.font(AppFonts.sans(13)) .font(AppFonts.sans(13, weight: .medium))
.foregroundColor(AppColors.text(cs)) .foregroundColor(AppColors.text(cs))
if let d = task.dueDate, showDetails { if let d = task.dueDate, showDetails {
Text("\(dueFmt.string(from: d))\(task.isRecurring ? " · \(task.recurrenceLabel ?? "Repeat")" : "")") Text("\(dueFmt.string(from: d))\(task.isRecurring ? " · \(task.recurrenceLabel ?? "Repeat")" : "")")
.font(AppFonts.mono(9.5)) .font(AppFonts.mono(9.5))
.tracking(0.2)
.foregroundColor(AppColors.text3(cs)) .foregroundColor(AppColors.text3(cs))
} }
} }
@@ -1366,10 +1367,11 @@ struct TaskRowView: View {
// Right column mirrors the left: countdown metadata on top, // Right column mirrors the left: countdown metadata on top,
// icon-only category/reminder/series indicators below fills // icon-only category/reminder/series indicators below fills
// what used to be dead space instead of a lone floating icon. // what used to be dead space instead of a lone floating icon.
VStack(alignment: .trailing, spacing: 3) { VStack(alignment: .trailing, spacing: 4) {
if let d = task.dueDate, showDetails { if let d = task.dueDate, showDetails {
Text(countdownLabel(to: d)) Text(countdownLabel(to: d))
.font(AppFonts.mono(9.5, weight: .semibold)) .font(AppFonts.mono(9.5, weight: .semibold))
.tracking(0.2)
.foregroundColor(countdownColor(to: d)) .foregroundColor(countdownColor(to: d))
} }
HStack(spacing: 5) { HStack(spacing: 5) {