diff --git a/apps/web/src/app/reminders/[id]/page.tsx b/apps/web/src/app/reminders/[id]/page.tsx index f16a16e..474c15b 100644 --- a/apps/web/src/app/reminders/[id]/page.tsx +++ b/apps/web/src/app/reminders/[id]/page.tsx @@ -230,16 +230,23 @@ export default async function ReminderDetailPage({ params }: Props) {

{formatWhen(reminder.scheduledAt, tz)}

{reminder.rrule && reminder.scheduledAt ? ( - // items-start (not items-center) + wrapping the text in - // a so a long recurrence description - // ("Every month on days 4, 6, 11, 13, 18, 20 +2 more - // at 11:32") wraps onto a second line instead of - // overflowing the card horizontally. mt-0.5 nudges the - // icon to baseline with the first line of text since - // items-start no longer vertically centers it. -

- - + // Single-line summary with mid-string ellipsis. Long + // descriptions ("Every month on days 4, 6, 11, 13, 18, + // 20 +2 more at 11:32") truncate cleanly via `truncate` + // (overflow-hidden + text-ellipsis + whitespace-nowrap) + // so the card height stays predictable. The native + // browser tooltip on `title` lets the operator read + // the full string without leaving the page; the edit + // form is the canonical full view. +

+ + {describeRecurrence( specFromRrule(reminder.rrule), DateTime.fromJSDate(reminder.scheduledAt).setZone(reminder.timezone),